Lichen

internal_tests/references.py

653:25ac2cdf05a9
2017-03-04 Paul Boddie Moved instruction plan generation into the deducer. Updated various docstrings to reflect the behaviour of the code.
     1 #!/usr/bin/env python     2      3 from referencing import decode_reference, Reference     4      5 def show_test(v1, v2):     6     print "%r %r %r" % (v1 == v2, v1, v2)     7      8 # Compare decoded and constructed references.     9     10 var1 = decode_reference("<var>")    11 var2 = Reference("<var>")    12 show_test(var1, var2)    13     14 # Compare with var with superfluous origin.    15     16 var3 = Reference("<var>", "whatever")    17 show_test(var1, var3)    18     19 # Compare with var and alias.    20     21 var4 = Reference("<var>", None, "attribute")    22 show_test(var1, var4)    23     24 # Compare with var with superfluous origin and alias.    25     26 var5 = Reference("<var>", "whatever", "attribute")    27 show_test(var1, var5)    28 show_test(var5.get_origin(), None)    29     30 # Compare vars with different aliases.    31     32 var6 = Reference("<var>", None, "other")    33 show_test(var4, var6)    34     35 # Check aliased var.    36     37 var7 = var1.alias("attribute")    38 show_test(var7, var4)    39     40 # Check class references, firstly with someclass being identified as a class.    41     42 cls1 = decode_reference("<class>", "someclass")    43 cls2 = Reference("<class>", "someclass")    44 show_test(cls1, cls2)    45     46 # Check aliasing of class references.    47     48 cls3 = cls1.alias("attribute")    49 cls4 = cls2.alias("other")    50 show_test(cls3, cls4)    51     52 # Check other class references.    53     54 cls5 = decode_reference("<class>:someclass")    55 cls6 = Reference("<class>", "someclass")    56 show_test(cls5, cls6)    57     58 # Check aliasing again.    59     60 cls7 = cls5.alias("attribute")    61 cls8 = cls6.alias("other")    62 show_test(cls7, cls8)    63     64 # Check instance references. These do not make sense without an origin.    65     66 inst1 = decode_reference("<instance>:someclass", "whatever")    67 inst2 = Reference("<instance>", "someclass")    68 show_test(inst1, inst2)    69     70 # Check instantiation.    71     72 inst3 = cls5.instance_of()    73 show_test(inst1, inst3)    74     75 # Check modules.    76     77 mod1 = decode_reference("somemodule")    78 mod2 = Reference("<module>", "somemodule")    79 show_test(mod1, mod2)    80     81 mod3 = decode_reference("<module>:somemodule")    82 show_test(mod1, mod3)    83     84 mod4 = decode_reference("<module>", "somemodule")    85 show_test(mod1, mod4)    86     87 # vim: tabstop=4 expandtab shiftwidth=4