tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_callback_interface.py (2978B)


      1 import WebIDL
      2 
      3 
      4 def WebIDLTest(parser, harness):
      5    parser.parse(
      6        """
      7        callback interface TestCallbackInterface {
      8          attribute boolean bool;
      9        };
     10    """
     11    )
     12 
     13    results = parser.finish()
     14 
     15    iface = results[0]
     16 
     17    harness.ok(iface.isCallback(), "Interface should be a callback")
     18 
     19    parser = parser.reset()
     20    threw = False
     21    try:
     22        parser.parse(
     23            """
     24            interface TestInterface {
     25            };
     26            callback interface TestCallbackInterface : TestInterface {
     27              attribute boolean bool;
     28            };
     29        """
     30        )
     31        parser.finish()
     32    except WebIDL.WebIDLError:
     33        threw = True
     34 
     35    harness.ok(threw, "Should not allow non-callback parent of callback interface")
     36 
     37    parser = parser.reset()
     38    threw = False
     39    try:
     40        parser.parse(
     41            """
     42            interface TestInterface : TestCallbackInterface {
     43            };
     44            callback interface TestCallbackInterface {
     45              attribute boolean bool;
     46            };
     47        """
     48        )
     49        parser.finish()
     50    except WebIDL.WebIDLError:
     51        threw = True
     52 
     53    harness.ok(threw, "Should not allow callback parent of non-callback interface")
     54 
     55    parser = parser.reset()
     56    parser.parse(
     57        """
     58        callback interface TestCallbackInterface1 {
     59          undefined foo();
     60        };
     61        callback interface TestCallbackInterface2 {
     62          undefined foo(DOMString arg);
     63          undefined foo(TestCallbackInterface1 arg);
     64        };
     65        callback interface TestCallbackInterface3 {
     66          undefined foo(DOMString arg);
     67          undefined foo(TestCallbackInterface1 arg);
     68          static undefined bar();
     69        };
     70        callback interface TestCallbackInterface4 {
     71          undefined foo(DOMString arg);
     72          undefined foo(TestCallbackInterface1 arg);
     73          static undefined bar();
     74          const long baz = 5;
     75        };
     76        callback interface TestCallbackInterface5 {
     77          static attribute boolean bool;
     78          undefined foo();
     79        };
     80        callback interface TestCallbackInterface6 {
     81          undefined foo(DOMString arg);
     82          undefined foo(TestCallbackInterface1 arg);
     83          undefined bar();
     84        };
     85        callback interface TestCallbackInterface7 {
     86          static attribute boolean bool;
     87        };
     88        callback interface TestCallbackInterface8 {
     89          attribute boolean bool;
     90        };
     91        callback interface TestCallbackInterface9 : TestCallbackInterface1 {
     92          undefined foo();
     93        };
     94        callback interface TestCallbackInterface10 : TestCallbackInterface1 {
     95          undefined bar();
     96        };
     97    """
     98    )
     99    results = parser.finish()
    100    for i, iface in enumerate(results):
    101        harness.check(
    102            iface.isSingleOperationInterface(),
    103            i < 4,
    104            "Interface %s should be a single operation interface"
    105            % iface.identifier.name,
    106        )