Index: mojo/public/tools/bindings/mojom_bindings_generator_unittest.py |
diff --git a/mojo/public/tools/bindings/mojom_bindings_generator_unittest.py b/mojo/public/tools/bindings/mojom_bindings_generator_unittest.py |
index de388561cb5ce5c37dbfd9da37f8096909f5adaa..bcffbbb116ef82889e90b3c143ee202a76e7f9d0 100644 |
--- a/mojo/public/tools/bindings/mojom_bindings_generator_unittest.py |
+++ b/mojo/public/tools/bindings/mojom_bindings_generator_unittest.py |
@@ -5,6 +5,19 @@ |
import unittest |
from mojom_bindings_generator import MakeImportStackMessage |
+from mojom_bindings_generator import ScrambleMethodOrdinals |
+ |
+ |
+class FakeIface(object): |
+ def __init__( self ): |
+ self.name = None |
+ self.methods = None |
+ |
+ |
+class FakeMethod(object): |
+ def __init__( self ): |
+ self.ordinal = None |
+ self.ordinal_comment = None |
class MojoBindingsGeneratorTest(unittest.TestCase): |
@@ -18,6 +31,23 @@ class MojoBindingsGeneratorTest(unittest.TestCase): |
self.assertEquals(MakeImportStackMessage(["x", "y", "z"]), |
"\n z was imported by y\n y was imported by x") |
+ def testScrambleMethodOrdinals(self): |
+ """Tests ScrambleMethodOrdinals().""" |
+ interface = FakeIface() |
+ interface.name = 'RendererConfiguration' |
+ interface.methods = [FakeMethod(), FakeMethod(), FakeMethod()] |
+ ScrambleMethodOrdinals([interface], "foo") |
+ # These next three values are hard-coded. If the generation algorithm |
+ # changes from being based on sha256(seed + interface.name + str(i)) then |
+ # these numbers will obviously need to change too. |
+ # |
+ # Note that hashlib.sha256('fooRendererConfiguration1').digest()[:4] is |
+ # '\xa5\xbc\xf9\xca' and that hex(1257880741) = '0x4af9bca5'. The |
+ # difference in 0x4a vs 0xca is because we only take 31 bits. |
+ self.assertEquals(interface.methods[0].ordinal, 1257880741) |
+ self.assertEquals(interface.methods[1].ordinal, 631133653) |
+ self.assertEquals(interface.methods[2].ordinal, 549336076) |
+ |
if __name__ == "__main__": |
unittest.main() |