File: scope-sharing-browser-tests.html

package info (click to toggle)
node-eslint-plugin-html 6.2.0-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 696 kB
  • sloc: javascript: 2,011; makefile: 28; sh: 27
file content (84 lines) | stat: -rw-r--r-- 2,542 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>Scope sharing tests</title>
  </head>
  <body>
    <script>
      function expect(fn) {
        try {
          if (fn() === false) console.error(`${fn} returned false`)
          console.log(`${fn} succeeded`)
        }
        catch (e) {
          console.error(`${fn} threw ${e}`)
        }
      }

      function expectThrows(fn, expectedException) {
        try {
          fn()
          console.error(`${fn} didn't threw ${expectedException.name}`)
        }
        catch (e) {
          if (e instanceof expectedException) {
            console.log(`${fn} expectedly threw ${expectedException.name}`)
          }
          else {
            console.log(`${fn} threw ${e} instead of ${expectedException.name}`)
          }
        }
      }
    </script>

    <script>
      var varGloballyDeclared = 1
      let letGloballyDeclared = 1
      function functionGloballyDeclared() {}
      class ClassGloballyDeclared {}

      console.group("Declarations are not hoisted to previous scripts")
      expectThrows(() => varNotYetGloballyDeclared, ReferenceError)
      expectThrows(() => letNotYetGloballyDeclared, ReferenceError)
      expectThrows(() => functionNotYetGloballyDeclared, ReferenceError)
      expectThrows(() => ClassNotYetGloballyDeclared, ReferenceError)
      console.groupEnd()
    </script>

    <script>
      var varNotYetGloballyDeclared = 2
      let letNotYetGloballyDeclared = 2
      function functionNotYetGloballyDeclared() {}
      class ClassNotYetGloballyDeclared {}

      console.group("Standard scripts are using the global scope")
      expect(() => varGloballyDeclared === 1)
      expect(() => letGloballyDeclared === 1)
      expect(() => Boolean(functionGloballyDeclared))
      expect(() => Boolean(ClassGloballyDeclared))
      console.groupEnd()
    </script>

    <script type="module">
      var varModuleDeclared = 3

      console.group("Modules are using the global scope")
      expect(() => varGloballyDeclared === 1)
      expect(() => Boolean(functionGloballyDeclared))
      console.groupEnd()
    </script>

    <script type="module">
      console.group("Modules are not sharing their scope")
      expectThrows(() => varModuleDeclared, ReferenceError)
      console.groupEnd()
    </script>

    <script>
      console.group("Modules are not exporting declarations to the global scope")
      expectThrows(() => varModuleDeclared, ReferenceError)
      console.groupEnd()
    </script>
  </body>
</html>