Skip to content

Commit f1a0c63

Browse files
committed
Added tests for type casts #8
1 parent 0fbcec6 commit f1a0c63

File tree

2 files changed

+74
-0
lines changed

2 files changed

+74
-0
lines changed

src/AngleSharp.Scripting.JavaScript.Tests/AngleSharp.Scripting.JavaScript.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
<ItemGroup>
6262
<Compile Include="ComponentTests.cs" />
6363
<Compile Include="Constants.cs" />
64+
<Compile Include="ExtendedTests.cs" />
6465
<Compile Include="FireEventTests.cs" />
6566
<Compile Include="Helpers.cs" />
6667
<Compile Include="IntegrationTests.cs" />
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
namespace AngleSharp.Scripting.JavaScript.Tests
2+
{
3+
using AngleSharp.Dom.Html;
4+
using AngleSharp.Extensions;
5+
using AngleSharp.Scripting.JavaScript.Services;
6+
using NUnit.Framework;
7+
using System.Threading.Tasks;
8+
9+
[TestFixture]
10+
public class ExtendedTests
11+
{
12+
[Test]
13+
public async Task BooleanValueCanBeConvertedToString()
14+
{
15+
var service = new JavaScriptProvider();
16+
var cfg = Configuration.Default.With(service);
17+
var html = "<!doctype html><iframe></iframe><script>document.querySelector('iframe').setAttribute('allowfullscreen', true);</script>";
18+
var document = await BrowsingContext.New(cfg).OpenAsync(m => m.Content(html));
19+
var iframe = document.QuerySelector("iframe");
20+
Assert.AreEqual(1, iframe.Attributes.Length);
21+
Assert.AreEqual("allowfullscreen", iframe.Attributes[0].Name);
22+
Assert.AreEqual("true", iframe.Attributes[0].Value);
23+
}
24+
25+
[Test]
26+
public async Task ObjectValueCanBeConvertedToString()
27+
{
28+
var service = new JavaScriptProvider();
29+
var cfg = Configuration.Default.With(service);
30+
var html = "<!doctype html><iframe></iframe><script>document.querySelector('iframe').setAttribute('allowfullscreen', window);</script>";
31+
var document = await BrowsingContext.New(cfg).OpenAsync(m => m.Content(html));
32+
var iframe = document.QuerySelector("iframe");
33+
Assert.AreEqual(1, iframe.Attributes.Length);
34+
Assert.AreEqual("allowfullscreen", iframe.Attributes[0].Name);
35+
Assert.AreEqual("[object Window]", iframe.Attributes[0].Value);
36+
}
37+
38+
[Test]
39+
public async Task NumericValueCanBeConvertedToString()
40+
{
41+
var service = new JavaScriptProvider();
42+
var cfg = Configuration.Default.With(service);
43+
var html = "<!doctype html><iframe></iframe><script>document.querySelector('iframe').setAttribute('allowfullscreen', 2.6);</script>";
44+
var document = await BrowsingContext.New(cfg).OpenAsync(m => m.Content(html));
45+
var iframe = document.QuerySelector("iframe");
46+
Assert.AreEqual(1, iframe.Attributes.Length);
47+
Assert.AreEqual("allowfullscreen", iframe.Attributes[0].Name);
48+
Assert.AreEqual("2.6", iframe.Attributes[0].Value);
49+
}
50+
51+
[Test]
52+
public async Task BooleanConversionForStringsTakesPlace()
53+
{
54+
var service = new JavaScriptProvider();
55+
var cfg = Configuration.Default.With(service);
56+
var html = "<!doctype html><option></option><script>document.querySelector('option').disabled = 'a';</script>";
57+
var document = await BrowsingContext.New(cfg).OpenAsync(m => m.Content(html));
58+
var option = document.QuerySelector<IHtmlOptionElement>("option");
59+
Assert.AreEqual(true, option.IsDisabled);
60+
}
61+
62+
[Test]
63+
public async Task BooleanConversionForNumbersTakesPlace()
64+
{
65+
var service = new JavaScriptProvider();
66+
var cfg = Configuration.Default.With(service);
67+
var html = "<!doctype html><option></option><script>document.querySelector('option').disabled = 1;</script>";
68+
var document = await BrowsingContext.New(cfg).OpenAsync(m => m.Content(html));
69+
var option = document.QuerySelector<IHtmlOptionElement>("option");
70+
Assert.AreEqual(true, option.IsDisabled);
71+
}
72+
}
73+
}

0 commit comments

Comments
 (0)