{ "version": 3, "sourceRoot": "Source", "sources": ["WebSharper.Html5.Tests/JSBindings.fs", "WebSharper.Html5.Tests/Tests.fs"], "sourcesContent": ["// $begin{copyright}\n//\n// This file is part of WebSharper\n//\n// Copyright (c) 2008-2016 IntelliFactory\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you\n// may not use this file except in compliance with the License. You may\n// obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n// implied. See the License for the specific language governing\n// permissions and limitations under the License.\n//\n// $end{copyright}\n\nmodule WebSharper.Html5.Tests.JSBindings\n\nopen WebSharper\nopen WebSharper.JavaScript\nopen WebSharper.JQuery\nopen WebSharper.Testing\n\n\ntype Browser =\n | IE of string\n | Firefox of string\n | Edge of string\n | Chrome of string\n | Safari of string\n | Opera of string\n | Other of string\n\n[]\nlet BrowserVersion() =\n let ua = JS.Window.Navigator?userAgent\n let ua = ua.ToString()\n let regexstr = \"(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)\"\n let regexp = new RegExp(regexstr, \"i\")\n let m = regexp.Exec(ua)\n let m1, m2 =\n if Array.length m >= 3\n then m.[1], m.[2]\n else if Array.length m >= 2\n then m.[1], \"\"\n else \"\", \"\"\n if (new RegExp(\"trident\", \"i\")).Test(m1) then\n let version = \"\\\\brv[ :]+(\\d+)\"\n let iregexp = new RegExp(version, \"g\")\n let res = iregexp.Exec(ua)\n let ver = if Array.length res >= 2 then res.[1] else \"\"\n (Browser.IE ver)\n else if (m1 = \"Chrome\") then\n let iregexp = new RegExp(\"\\\\b(OPR|Edge)\\/(\\d+)\", \"\")\n let im = iregexp.Exec(ua)\n match im with\n | null -> \n (Browser.Chrome m2)\n | im ->\n let res = im.[1..]\n let br = res.[1]\n match br with\n | \"OPR\" -> (Browser.Opera res.[2])\n | \"Edge\" -> (Browser.Edge res.[2])\n | _ -> (Browser.Other ua)\n else if (m1 = \"Firefox\") then\n (Browser.Firefox m2)\n else\n (Browser.Other ua)\n[]\nlet isIE () =\n let bv = BrowserVersion()\n match bv with\n | (Browser.IE ver) -> true\n | _ -> false\n\n[]\nlet Tests =\n TestCategory \"JSBindings\" {\n\n Test \"EcmaRegexp\" {\n let regexp = new RegExp(\"a\", \"g\")\n equalMsg regexp.Flags \"g\" \".flags\"\n isFalseMsg regexp.Unicode \".unicode\"\n isFalseMsg regexp.Sticky \".sticky\"\n let teststr = \"abacad\"\n equalMsg (Array.length (regexp.Match(teststr))) 3 \".match()\"\n equalMsg (regexp.Replace(teststr, \"x\")) \"xbxcxd\" \".replace()\"\n equalMsg (regexp.Split(teststr)) [| \"\"; \"b\"; \"c\"; \"d\" |] \".split()\"\n equalMsg (regexp.Search(teststr)) 0 \".search()\"\n }\n\n Test \"Element\" {\n let elem = JS.Document.CreateElement(\"div\")\n equalMsg elem.OuterHTML \"
\" \"OuterHTML checking\"\n equalMsg elem.InnerHTML \"\" \"InnerHTML checking for emptiness (no child)\"\n elem.SetAttribute(\"height\", \"500\")\n elem.SetAttribute(\"class\", \"example-class\")\n elem.SetAttribute(\"id\", \"example-id\")\n let child = JS.Document.CreateElement(\"div\")\n child.SetAttribute(\"class\", \"child-example-class\")\n elem.AppendChild(child) |> ignore\n notEqualMsg elem.InnerHTML \"\" \"InnerHTML checking for emptiness (has child)\"\n equalMsg elem.Attributes.Length 3 \"Attribute count\"\n isTrueMsg (elem.HasAttributes()) \"Has attributes\"\n notEqualMsg elem.ClassName \"\" \"Class name checking for emptiness: \"\n notEqualMsg elem.Id \"\" \"Id checking for emptiness\"\n isTrueMsg (elem.Prefix = null) \"Prefix checking\"\n equalMsg elem.LocalName \"div\" \"Local name checking\"\n isTrueMsg (elem.NamespaceURI <> \"\") \"Checking namespace emptiness\"\n notEqualMsg (elem.GetElementsByClassName(\"child-example-class\").Length) 0 \"Childs by name count\"\n }\n\n\n// do if not (isIE()) then\n// Test \"Text\" {\n// let exampleText = Dom.Text(\"example-text\")\n// equalMsg (exampleText.WholeText) \"example-text\" \"Check for initial value\"\n// let splitRemained = exampleText.SplitText(7)\n// equalMsg (exampleText.WholeText) \"example\" \"Check splitted value\"\n// equalMsg (splitRemained.WholeText) \"-text\" \"Check remaining value after splitting\"\n// }\n//\n// Test \"Event\" {\n// let event = new Dom.Event(\"click\")\n// isFalseMsg event.Composed \"Is composed (click)\"\n// isFalseMsg event.IsTrusted \"Is trusted (click)\"\n// notEqualMsg event.CurrentTarget JS.Undefined \"Checking current target\"\n// notEqualMsg event.Target JS.Undefined \"Checking target\"\n// notEqualMsg event.TimeStamp JS.Undefined \"Checking timestamp\"\n// equalMsg event.Type \"click\" \"Checking type\"\n// }\n\n Test \"Document\" {\n let doc = JS.Document\n notEqualMsg doc.Cookie JS.Undefined \"Checking body\"\n notEqualMsg doc.Body JS.Undefined \"Checking body\"\n notEqualMsg doc.Head JS.Undefined \"Checking head\"\n notEqualMsg doc.Dir JS.Undefined \"Checking dir\"\n notEqualMsg doc.Doctype JS.Undefined \"Checking doctype\"\n notEqualMsg doc.DocumentElement JS.Undefined \"Checking documentElement\"\n notEqualMsg doc.Domain JS.Undefined \"Checking domain\"\n notEqualMsg doc.Embeds JS.Undefined \"Checking for embeds\"\n notEqualMsg doc.Forms JS.Undefined \"Checking for forms\"\n notEqualMsg doc.Hidden JS.Undefined \"Checking for hidden\"\n notEqualMsg doc.Images JS.Undefined \"Checking for images\"\n notEqualMsg doc.Links JS.Undefined \"Checking for links\"\n notEqualMsg doc.LastModified JS.Undefined \"Checking for lastModified\"\n notEqualMsg doc.Plugins JS.Undefined \"Checking for plugins\"\n notEqualMsg doc.ReadyState JS.Undefined \"Checking for readystate\"\n notEqualMsg doc.Referrer JS.Undefined \"Checking for referrer\"\n notEqualMsg doc.Scripts JS.Undefined \"Checking for scripts\"\n notEqualMsg doc.Title JS.Undefined \"Checking for title\"\n notEqualMsg doc.URL JS.Undefined \"Checking for URL\"\n notEqualMsg doc.VisibilityState JS.Undefined \"Checking for visibility\"\n }\n\n Test \"NodeIterator\" {\n let doc = JS.Document\n let iterator = doc.CreateNodeIterator(doc)\n equalMsg (iterator.NextNode()) iterator.Root \"Checking nextNode\"\n equalMsg (iterator.PreviousNode()) iterator.Root \"Checking previousNode\"\n }\n\n Test \"TreeWalker\" {\n let doc = JS.Document\n let iterator = doc.CreateTreeWalker(doc)\n notEqualMsg (iterator.NextNode()) iterator.Root \"Checking nextNode\"\n equalMsg (iterator.PreviousNode()) iterator.Root \"Checking previousNode\"\n notEqualMsg (iterator.CurrentNode) JS.Undefined \"Checking currentNode\"\n notEqualMsg (iterator.NextSibling()) JS.Undefined \"Checking nextSibling\"\n notEqualMsg (iterator.PreviousSibling()) JS.Undefined \"Checking previousSibling\"\n }\n\n//\n// Console.Log(BrowserVersion())\n// do if not (isIE()) then\n// Test \"EcmaObject\" {\n// let e = new JavaScript.Object()\n// let o1assign = New ( [ (\"a\",5 :> obj) ] )\n// let o2assign = New ( [ (\"a\",6 :> obj); (\"b\", 10 :> obj) ] )\n// let o1 = JavaScript.Object.Assign(e,o1assign)\n// isTrueMsg (JS.Undefined <> o1?a && o1?a = 5) \"Checking assign without merging\"\n// let e2 = new JavaScript.Object()\n// let o2 = JavaScript.Object.Assign(e2, o2assign, o1assign)\n// isTrueMsg (JS.Undefined <> o2?a && JS.Undefined <> o2?b && o2?a = 5 && o2?b = 10) \"Checking assign with merging\"\n// isFalseMsg (JavaScript.Object.Is(o1, o2)) \"Checking equality with is() /not true \"\n// isTrueMsg (JavaScript.Object.Is(o1, o1)) \"Checking equality with is()\"\n// }\n//\n// do if not (isIE()) then\n// Test \"EcmaMath\" {\n// equalMsg (Math.Cbrt 27.) 3. \"Math.cbrt\"\n// equalMsg (Math.Clz32 1.) 31. \"Math.clz32\"\n// equalMsg (Math.Expm1 0.) 0. \"Math.expm1\"\n// equalMsg (Math.Hypot (3., 4.)) 5. \"Math.hypot\"\n// equalMsg (Math.Imul (2., 4.)) 8. \"Math.imul\"\n// equalMsg (Math.Fround(1.5)) 1.5 \"Math.fround\"\n// equalMsg (Math.Atanh(1.)) JS.Infinity \"Math.atanh\"\n// equalMsg (Math.Atanh(0.)) 0. \"Math.atanh\"\n// equalMsg (Math.Asinh(0.)) (0.) \"Math.asinh\"\n// equalMsg (Math.Log1p(Math.E - 1.)) 1. \"Math.log1p\"\n// equalMsg (Math.Log10(1000.)) 3. \"Math.log10\"\n// equalMsg (Math.Log2(16.)) 4. \"Math.log2\"\n// equalMsg (Math.Sign(0.)) 0. \"Math.sign of 0\"\n// equalMsg (Math.Sign(2.)) 1. \"Math.sign of 2\"\n// equalMsg (Math.Sign(-5.)) -1. \"Math.sign of -5\"\n// equalMsg (Math.Trunc(3.14)) 3. \"Math.trunc\"\n// }\n// else \n// Test \"EcmaMath\" {\n// equalMsg (Math.Trunc(3.14)) 3. \"Math.trunc\"\n// }\n//\n// do if not (isIE()) then\n// Test \"EcmaNumber\" {\n// equalMsg (Number.ParseFloat(\"3.14\")) 3.14 \"Number.parseFloat\"\n// equalMsg (Number.ParseInt(\"3.14\")) 3 \"Number.parseInt failed\"\n// equalMsg (Number.ParseInt(\"3\")) 3 \"Number.parseInt\"\n// isTrueMsg (Number.IsNaN(Number.ParseFloat(\"not-a-number\"))) \"Number.isNaN\"\n// isTrueMsg (Number.IsFinite(5)) \"Number.isFinite\"\n// isFalseMsg (Number.IsFinite(JS.Infinity)) \"Number.isFinite infinity\"\n// }\n//\n// Test \"EcmaString\" {\n// let exampleString = new String(\"example-string\")\n// let repeatable = new String(\"rpt\")\n// isTrueMsg (exampleString.EndsWith(\"in\", 13)) \"String.endsWith\"\n// isFalseMsg (exampleString.EndsWith(\"asd\")) \"String.endsWith failed\"\n// isTrueMsg (exampleString.Includes(\"ple\")) \"String.includes\"\n// isFalseMsg (exampleString.Includes(\"ple\", 8)) \"String.includes\"\n// equalMsg (repeatable.Repeat(3)) \"rptrptrpt\" \"String.repeat\"\n// equalMsg (exampleString.Substr(-5,3)) \"tri\" \"String.substr\"\n// isTrueMsg (exampleString.StartsWith(\"amp\", 2)) \"String.startsWith\"\n// }\n\n\n //Test \"Window\" {\n // let mywindow = JS.Window.Open(\"\", \"myWindow\", \"width=300, height=200\")\n // mywindow.Document.Write(\"
\")\n // mywindow.Scroll(0, 1200)\n // equalMsg mywindow.ScrollY 1200. \"scroll is working\"\n // let currentScreenX, currentScreenY = mywindow.ScreenX, mywindow.ScreenY\n // mywindow.MoveBy(-50, -50)\n // let targetY = if currentScreenY < 50 then 0 else currentScreenY - 50\n // equalMsg mywindow.ScreenX (currentScreenX - 50) \"moving horizontally is ok\"\n // equalMsg mywindow.ScreenY targetY \"moving vertically is ok\"\n // mywindow.ResizeTo(500, 600)\n // equalMsg mywindow.OuterWidth (500) \"resizing horizontally is ok\"\n // equalMsg mywindow.OuterHeight (600) \"resizing vertically is ok\"\n //}\n }\n\n", "// $begin{copyright}\n//\n// This file is part of WebSharper\n//\n// Copyright (c) 2008-2016 IntelliFactory\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you\n// may not use this file except in compliance with the License. You may\n// obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n// implied. See the License for the specific language governing\n// permissions and limitations under the License.\n//\n// $end{copyright}\n\nmodule WebSharper.Html5.Tests.Main\n\nopen WebSharper\nopen WebSharper.JavaScript\nopen WebSharper.JQuery\n\n[]\ntype Elt (name) =\n let dom = JS.Document.CreateElement(name)\n let mutable afterInsert = [||]\n\n member this.Dom = dom\n\n member this.OnAfterInsert(f : Dom.Element -> unit) =\n afterInsert.JS.Push(f) |> ignore\n this\n\n member this.InsertInto (parent: Dom.Node) =\n parent.AppendChild(dom) |> ignore\n Array.iter (fun f -> f dom) afterInsert\n afterInsert <- [||]\n\n interface IControlBody with\n member this.ReplaceInDom old =\n old.ParentNode.ReplaceChild(dom, old) |> ignore\n Array.iter (fun f -> f dom) afterInsert\n afterInsert <- [||]\n\nmodule Utils =\n []\n let SetInterval (x: obj) (n: int) = X\n\nmodule SamplesInternals =\n\n []\n exception NoGeoLocation of Geolocation.PositionError\n\n []\n let GetPosition() : (Async) =\n Async.FromContinuations(fun (onOk, onErr, _) ->\n JS.Window.Navigator.Geolocation.GetCurrentPosition(\n (fun pos -> onOk pos),\n (fun err -> onErr (NoGeoLocation err))\n )\n )\n\n []\n let Canvas (height: int, width: int) (f: CanvasRenderingContext2D -> unit) =\n Elt(\"canvas\").OnAfterInsert(fun e ->\n e.SetAttribute(\"height\", string height)\n e.SetAttribute(\"width\", string width)\n let context = As(e).GetContext \"2d\"\n f context\n )\n\n []\n let Example1 (ctx: CanvasRenderingContext2D) =\n ctx.FillText(\"Hello World\", 60., 70.)\n ctx.FillText(\"Hello World\", 60., 70., 1.)\n ctx.FillStyle <- \"rgb(200, 0, 0)\"\n ctx.FillRect(10., 10., 55., 50.)\n ctx.FillStyle <- \"rgba(0, 0, 200, 0.5)\"\n ctx.FillRect(30., 30., 55., 50.)\n\n []\n let Example2 (ctx: CanvasRenderingContext2D) =\n ctx.FillRect(25., 25., 100., 100.)\n ctx.ClearRect(45., 45., 60., 60.)\n ctx.StrokeRect(50., 50., 50., 50.)\n\n []\n let Example3 (ctx: CanvasRenderingContext2D) =\n ctx.BeginPath()\n ctx.Arc(75., 75., 50., 0., Math.PI * 2., true);\n ctx.MoveTo(110., 75.)\n ctx.Arc(75., 75., 35., 0., Math.PI, false);\n ctx.MoveTo(65., 65.)\n ctx.Arc(60., 65., 5., 0., Math.PI *2., true);\n ctx.MoveTo(95., 65.)\n ctx.Arc(90., 65., 5., 0., Math.PI *2., true);\n ctx.Stroke()\n\n []\n let Example4 (ctx: CanvasRenderingContext2D) =\n // Filled triangle\n ctx.BeginPath()\n ctx.MoveTo(25., 25.)\n ctx.LineTo(105., 25.)\n ctx.LineTo(25., 105.)\n ctx.Fill()\n\n // Stroked triangle\n ctx.BeginPath()\n ctx.MoveTo(125., 125.)\n ctx.LineTo(125., 45.)\n ctx.LineTo(45., 125.)\n ctx.ClosePath()\n ctx.Stroke()\n\n []\n let Example5 (ctx: CanvasRenderingContext2D) =\n ctx.BeginPath();\n ctx.MoveTo(75., 25.)\n ctx.QuadraticCurveTo(25., 25., 25., 62.5)\n ctx.QuadraticCurveTo(25., 100., 50., 100.)\n ctx.QuadraticCurveTo(50., 120., 30., 125.)\n ctx.QuadraticCurveTo(60., 120., 65., 100.)\n ctx.QuadraticCurveTo(125., 100., 125., 62.5)\n ctx.QuadraticCurveTo(125., 25., 75., 25.)\n ctx.Stroke()\n\n []\n let Example6 (ctx: CanvasRenderingContext2D) =\n let roundedRect(x: float, y: float, width: float, height: float, radius: float) =\n ctx.BeginPath()\n ctx.MoveTo(x, (y+radius))\n ctx.LineTo(x, (y+height-radius))\n ctx.QuadraticCurveTo(x, (y+height), (x+radius), (y+height))\n ctx.LineTo((x+width-radius), (y+height))\n ctx.QuadraticCurveTo(x+width, y+height, x+width, y+height-radius)\n ctx.LineTo(x+width, y+radius)\n ctx.QuadraticCurveTo(x+width, y, x+width-radius, y)\n ctx.LineTo(x+radius, y)\n ctx.QuadraticCurveTo(x, y, x, y+radius)\n ctx.Stroke()\n\n roundedRect(12.,12.,150.,150.,15.)\n roundedRect(19.,19.,150.,150.,9.)\n roundedRect(53.,53.,49.,33.,10.)\n roundedRect(53.,119.,49.,16.,6.)\n roundedRect(135.,53.,49.,33.,10.)\n roundedRect(135.,119.,25.,49.,10.)\n ctx.BeginPath()\n ctx.Arc(37., 37., 13., -Math.PI/7., Math.PI/7., true)\n ctx.LineTo(31., 37.)\n ctx.Fill()\n for i in 0..7 do\n ctx.FillRect(51.+(float i)*16., 35., 4., 4.)\n for i in 0..5 do\n ctx.FillRect(115., 51.+(float i)*16., 4., 4.)\n for i in 0..7 do\n ctx.FillRect(51.+(float i)*16., 99., 4., 4.)\n ctx.BeginPath()\n ctx.MoveTo(83., 116.)\n ctx.LineTo(83., 102.)\n ctx.BezierCurveTo(83., 94., 89., 88., 97., 88.)\n ctx.BezierCurveTo(105., 88., 111., 94., 111., 102.)\n ctx.LineTo(111., 116.)\n ctx.LineTo(106.333, 111.333)\n ctx.LineTo(101.666, 116.)\n ctx.LineTo(97., 111.333)\n ctx.LineTo(92.333, 116.)\n ctx.LineTo(87.666, 111.333)\n ctx.LineTo(83., 116.)\n ctx.Fill()\n ctx.FillStyle <- \"white\"\n ctx.BeginPath()\n ctx.MoveTo(91., 96.)\n ctx.BezierCurveTo(88., 96., 87., 99., 87., 101.)\n ctx.BezierCurveTo(87., 103., 88., 106., 91., 106.)\n ctx.BezierCurveTo(94., 106., 95., 103., 95., 101.)\n ctx.BezierCurveTo(95., 99., 94., 96., 91., 96.)\n ctx.MoveTo(103., 96.)\n ctx.BezierCurveTo(100., 96., 99., 99., 99., 101.)\n ctx.BezierCurveTo(99., 103., 100., 106., 103., 106.)\n ctx.BezierCurveTo(106., 106., 107., 103., 107., 101.)\n ctx.BezierCurveTo(107., 99., 106., 96., 103., 96.)\n ctx.Fill()\n ctx.FillStyle <- \"black\"\n ctx.BeginPath()\n ctx.Arc(101., 102., 2., 0., Math.PI*2., true)\n ctx.Fill()\n ctx.BeginPath()\n ctx.Arc(89., 102., 2., 0., Math.PI*2., true)\n ctx.Fill()\n\n []\n let Example7 (ctx: CanvasRenderingContext2D) =\n let img = Elt(\"img\")\n img.Dom.AddEventListener(\"load\", (fun () ->\n ctx.DrawImage(img.Dom, 0., 0.)\n ctx.BeginPath()\n ctx.MoveTo(30., 96.)\n ctx.LineTo(70., 66.)\n ctx.LineTo(103., 76.)\n ctx.LineTo(170., 15.)\n ctx.Stroke()\n ), false)\n img.Dom.SetAttribute(\"src\", \"backdrop.png\")\n\n []\n let Example8 (ctx: CanvasRenderingContext2D) =\n let paint () =\n let now = new Date()\n ctx.Save();\n ctx.ClearRect(0., 0., 150., 150.)\n ctx.Translate(75., 75.)\n ctx.Scale(0.4, 0.4)\n ctx.Rotate(-Math.PI/2.)\n ctx.StrokeStyle <- \"black\"\n ctx.FillStyle <- \"white\"\n ctx.LineWidth <- 8.\n ctx.LineCap <- LineCap.Round\n\n ctx.Save()\n // Hours marks\n for i in 1..12 do\n ctx.BeginPath()\n ctx.Rotate(Math.PI/6.)\n ctx.MoveTo(100., 0.)\n ctx.LineTo(120., 0.)\n ctx.Stroke()\n ctx.Restore()\n // Minute marks\n ctx.Save()\n ctx.LineWidth <- 5.\n for i in 0..59 do\n if (i % 5) <> 0 then\n ctx.BeginPath()\n ctx.MoveTo(117., 0.)\n ctx.LineTo(120., 0.)\n ctx.Stroke()\n ctx.Rotate (Math.PI / 30.)\n ctx.Restore()\n\n let sec = now.GetSeconds() |> float\n let min = now.GetMinutes() |> float\n let hr =\n now.GetHours()\n |> fun hr -> if hr >= 12 then hr-12 else hr\n |> float\n\n ctx.FillStyle <- \"black\"\n\n // write Hours\n ctx.Save()\n ctx.Rotate( hr*(Math.PI/6.) + (Math.PI/360.)*min + (Math.PI/21600.)*sec )\n ctx.LineWidth <- 14.\n ctx.BeginPath()\n ctx.MoveTo(-20., 0.)\n ctx.LineTo(80., 0.)\n ctx.Stroke()\n ctx.Restore()\n\n // write Minutes\n ctx.Save()\n ctx.Rotate( (Math.PI/30.)*min + (Math.PI/1800.)*sec )\n ctx.LineWidth <- 10.\n ctx.BeginPath()\n ctx.MoveTo(-28., 0.)\n ctx.LineTo(112., 0.)\n ctx.Stroke()\n ctx.Restore()\n\n // Write seconds\n ctx.Save()\n ctx.Rotate(sec * Math.PI/30.)\n ctx.StrokeStyle <- \"#D40000\"\n ctx.FillStyle <- \"#D40000\"\n ctx.LineWidth <- 6.\n ctx.BeginPath()\n ctx.MoveTo(-30., 0.)\n ctx.LineTo(83., 0.)\n ctx.Stroke()\n ctx.BeginPath()\n ctx.Arc(0., 0., 10., 0., (Math.PI*2.), true)\n ctx.Fill()\n ctx.BeginPath()\n ctx.Arc(95., 0., 10., 0., (Math.PI*2.), true)\n ctx.Stroke()\n ctx.FillStyle <- \"#555\"\n ctx.Arc(0., 0., 3., 0., (Math.PI*2.), true)\n ctx.Fill()\n ctx.Restore()\n\n ctx.BeginPath()\n ctx.LineWidth <- 14.\n ctx.StrokeStyle <- \"#325FA2\"\n ctx.Arc(0., 0., 142., 0., (Math.PI*2.), true)\n ctx.Stroke()\n ctx.Restore()\n Utils.SetInterval paint 1000\n\nopen WebSharper.Testing\n\ntype TestBuilder with\n\n []\n []\n member this.Fixture<'A>\n (\n r: Runner<'A>,\n [] el: 'A -> Elt\n ) : Runner<'A> =\n fun isTrueer ->\n let v = r isTrueer\n Choice2Of2 (async {\n let! args =\n match v with\n | Choice1Of2 args -> async.Return args\n | Choice2Of2 args -> args\n let el = el args\n do! Async.FromContinuations (fun (ok, _, _) ->\n let fixture = JQuery.Of(\"#qunit-fixture\").Empty().Get(0)\n el.OnAfterInsert(fun _ -> ok())\n .InsertInto(fixture)\n )\n return args\n })\n\n[]\nlet Tests =\n TestCategory \"HTML5\" {\n\n Test \"Geolocation\" {\n let! position = \n async { \n try\n return! SamplesInternals.GetPosition()\n with _ ->\n Console.Log \"Geolocation not supported\"\n return JS.Inline \"{ coords: { latitude: 0, longitude: 0 } }\"\n }\n let coords = position.Coords\n isFalse (JS.IsNaN coords.Latitude)\n isFalse (JS.IsNaN coords.Longitude)\n }\n\n Test \"LocalStorage\" {\n let storage = JS.Window.LocalStorage\n let key = \"intReference\"\n let intReference = storage.GetItem(key)\n let v =\n if intReference = null || intReference = JS.Undefined then\n 0\n else int intReference\n let newV = (v + 1).ToString()\n storage.SetItem(key, newV)\n let storedNewV = storage.GetItem(key)\n equal newV storedNewV\n }\n\n Test \"Canvas 1\" {\n fixture (SamplesInternals.Canvas (100, 200) SamplesInternals.Example1)\n expect 0\n }\n\n Test \"Canvas 2\" {\n fixture (SamplesInternals.Canvas (150, 200) SamplesInternals.Example2)\n expect 0\n }\n\n Test \"Canvas 3\" {\n fixture (SamplesInternals.Canvas (150, 200) SamplesInternals.Example3)\n expect 0\n }\n\n Test \"Canvas 4\" {\n fixture (SamplesInternals.Canvas (150, 200) SamplesInternals.Example4)\n expect 0\n }\n\n Test \"Canvas 5\" {\n fixture (SamplesInternals.Canvas (150, 200) SamplesInternals.Example5)\n expect 0\n }\n\n Test \"Canvas 6\" {\n fixture (SamplesInternals.Canvas (150, 150) SamplesInternals.Example6)\n expect 0\n }\n\n Test \"Canvas 7\" {\n fixture (SamplesInternals.Canvas (180, 130) SamplesInternals.Example7)\n expect 0\n }\n\n Test \"Canvas 8\" {\n fixture (SamplesInternals.Canvas (200, 200) SamplesInternals.Example8)\n expect 0\n }\n\n }\n\n[]\nlet GlobalFunction(s: string) =\n \"[worker] \" + s\n\n[]\nlet GlobalFunction2(s: string) =\n \"[worker2] \" + s\n\n[]\nlet ExportedFunction() =\n \"exported function\"\n\n[]\nlet rec GlobalExists (o: obj) (fields: list) =\n match fields with\n | [] -> true\n | f :: fs -> JS.HasOwnProperty o f && GlobalExists (o?(f)) fs\n\n[]\nlet InnerWorker(self: DedicatedWorkerGlobalScope) =\n let innerWorker =\n try\n new Worker(fun self ->\n self.Onmessage <- fun e ->\n self.PostMessage(GlobalFunction2(As e.Data))\n )\n with e -> Console.Log(e); Unchecked.defaultof<_>\n innerWorker.Onmessage <- fun e ->\n self.PostMessage(e.Data)\n self.Onmessage <- fun e ->\n innerWorker.PostMessage(e.Data)\n\n[]\nlet AsyncContinuationTimeout err f =\n async {\n let! x = Async.Catch <| async {\n let! job =\n Async.StartChild(\n // This must remain wrapped in async {}, or StartChild's timeout won't catch it\n // (that's not a proxy bug btw, .NET behavior is the same)\n async {\n let! x = Async.FromContinuations(fun (ok, _, _) -> f ok)\n return x\n }, 2000)\n return! job\n }\n match x with\n | Choice1Of2 res -> return res\n | Choice2Of2 _exn -> return err\n }\n\n[]\nlet WebWorkerTests =\n TestCategory \"Web Workers\" {\n\n Test \"BlobUri\" {\n let blob = Blob([|\"onmessage = function(e) { postMessage('[worker] ' + e.data); }\"|])\n let blobUrl = URL.CreateObjectURL(blob)\n let worker = new Worker(blobUrl)\n let! res = AsyncContinuationTimeout \"Worker didn't run\" <| fun ok ->\n worker.Onmessage <- fun e ->\n ok (\"The worker replied: \" + As e.Data)\n worker.PostMessage \"Hello world!\"\n equal res \"The worker replied: [worker] Hello world!\"\n }\n\n Test \"Macro\" {\n let worker = new Worker(fun self ->\n self.Onmessage <- fun e ->\n self.PostMessage(GlobalFunction(As e.Data))\n )\n let! res = AsyncContinuationTimeout \"Worker didn't run\" <| fun ok ->\n worker.Onmessage <- fun e ->\n ok (\"The worker replied: \" + As e.Data)\n worker.PostMessage \"Hello world!\"\n worker.Terminate()\n equal res \"The worker replied: [worker] Hello world!\"\n\n let worker2 = new Worker(fun self ->\n self.AddEventListener(\"message\", (fun (e: Dom.Event) ->\n let e = e :?> MessageEvent\n self.PostMessage(GlobalFunction2(As e.Data))\n ), false)\n )\n let! res = AsyncContinuationTimeout \"Worker didn't run\" <| fun ok ->\n worker2.AddEventListener(\"message\", (fun (e: Dom.Event) ->\n let e = e :?> MessageEvent\n ok (\"The worker replied: \" + As e.Data)\n ), false)\n worker2.PostMessage \"Hello world!\"\n worker2.Terminate()\n equal res \"The worker replied: [worker2] Hello world!\"\n }\n\n Test \"Macro with custom name\" {\n let worker = new Worker(\"my-worker\", fun self ->\n self.Onmessage <- fun e ->\n self.PostMessage(GlobalFunction(As e.Data))\n )\n let! res = AsyncContinuationTimeout \"Worker didn't run\" <| fun ok ->\n worker.Onmessage <- fun e ->\n ok (\"The worker replied: \" + As e.Data)\n worker.PostMessage \"Hello world!\"\n worker.Terminate()\n equal res \"The worker replied: [worker] Hello world!\"\n }\n\n //Test \"Macro with nested worker\" {\n // let worker = new Worker(InnerWorker)\n // let err = \"Nested worker didn't run (This is expected on Chrome! Should work on Firefox)\"\n // let! res = AsyncContinuationTimeout err <| fun ok ->\n // worker.Onmessage <- fun e ->\n // ok (\"The worker replied: \" + As e.Data)\n // worker.PostMessage \"Hello world!\"\n // equal res \"The worker replied: [worker2] Hello world!\"\n //}\n\n Test \"With Dependencies\" {\n let worker = new Worker(fun self ->\n self.Onmessage <- fun e ->\n MathJS.Math.Create().Abs(e.Data :?> int) |> self.PostMessage\n )\n let! res = AsyncContinuationTimeout \"Worker didn't run\" <| fun ok ->\n worker.Onmessage <- fun e -> ok <| string (e.Data :?> int)\n worker.PostMessage(-123)\n worker.Terminate()\n equal res \"123\"\n }\n\n Test \"JavaScriptExport inclusion\" {\n let worker = new Worker(\"withJsExport\", true, fun self ->\n self.Onmessage <- fun e ->\n JS.Global?WebSharper?Html5?Tests?Main?ExportedFunction() |> self.PostMessage\n )\n let! res = AsyncContinuationTimeout \"Worker didn't run\" <| fun ok ->\n worker.Onmessage <- fun e -> ok (e.Data :?> string)\n worker.PostMessage(())\n worker.Terminate()\n equalMsg res \"exported function\" \"true includes js exports\"\n\n let worker = new Worker(\"withoutJsExport\", false, fun self ->\n self.Onmessage <- fun e ->\n GlobalExists JS.Global [\"WebSharper\"; \"Html5\"; \"Tests\"; \"Main\"; \"ExportedFunction\"]\n |> self.PostMessage\n )\n let! res = AsyncContinuationTimeout \"Worker didn't run\" <| fun ok ->\n worker.Onmessage <- fun e -> ok <| string (e.Data :?> bool)\n worker.PostMessage(())\n worker.Terminate()\n equalMsg res \"false\" \"false doesn't include js exports\"\n\n let worker = new Worker(\"unspecifiedJsExport\", fun self ->\n self.Onmessage <- fun e ->\n GlobalExists JS.Global [\"WebSharper\"; \"Html5\"; \"Tests\"; \"Main\"; \"ExportedFunction\"]\n |> self.PostMessage\n )\n let! res = AsyncContinuationTimeout \"Worker didn't run\" <| fun ok ->\n worker.Onmessage <- fun e -> ok <| string (e.Data :?> bool)\n worker.PostMessage(())\n worker.Terminate()\n equalMsg res \"false\" \"default doesn't include js exports\"\n }\n\n }\n\n[]\nlet RunTests() =\n Runner.RunTests [|\n Tests\n JSBindings.Tests\n WebWorkerTests\n |]\n"], "names": [], "mappings": "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" }