Lichen

internal_tests/references.py

118:900d641f42d6
2016-10-20 Paul Boddie Added some more support for generating invocation code, distinguishing between static invocation targets that are identified and whose functions can be obtained directly and other kinds of targets whose functions must be obtained via the special attribute.
     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