From 4f46c441efef3a88498c186fdace5614bbe26cd7 Mon Sep 17 00:00:00 2001 From: Paul Sokolovsky Date: Tue, 29 Apr 2014 02:44:13 +0300 Subject: tests: Add basic tests for subclassing native types and using special methods. Even of these, some features do not yet work as expected. --- tests/basics/subclass-native1.py | 31 +++++++++++++++++++++++++++++++ tests/basics/subclass-native2.py | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 tests/basics/subclass-native1.py create mode 100644 tests/basics/subclass-native2.py (limited to 'tests') diff --git a/tests/basics/subclass-native1.py b/tests/basics/subclass-native1.py new file mode 100644 index 000000000..a17689342 --- /dev/null +++ b/tests/basics/subclass-native1.py @@ -0,0 +1,31 @@ +class mylist(list): + pass + +a = mylist([1, 2, 5]) +# Test setting instance attr +a.attr = "something" +# Test base type __str__ +print(a) +# Test getting instance attr +print(a.attr) +# Test base type ->subscr +print(a[-1]) +a[0] = -1 +print(a) +# Test another base type unary op +print(len(a)) + +# Test binary op of base type, with 2nd arg being raw base type +print(a + [20, 30, 40]) +# Test binary op of base type, with 2nd arg being same class as 1st arg +# TODO: Faults +#print(a + a) + +def foo(): + print("hello from foo") + +try: + class myfunc(type(foo)): + pass +except TypeError: + print("TypeError") diff --git a/tests/basics/subclass-native2.py b/tests/basics/subclass-native2.py new file mode 100644 index 000000000..749bf969c --- /dev/null +++ b/tests/basics/subclass-native2.py @@ -0,0 +1,37 @@ +class Base1: + def __init__(self, *args): + print("Base1.__init__",args) + +class Clist1(Base1, list): + pass + +class Ctuple1(Base1, tuple): + pass + +a = Clist1() +print(len(a)) +a = Clist1([1, 2, 3]) +print(len(a)) + +a = Ctuple1() +print(len(a)) +a = Ctuple1([1, 2, 3]) +# TODO: Faults +#print(len(a)) + +print("---") + +class Clist2(list, Base1): + pass + +class Ctuple2(tuple, Base1): + pass +a = Clist2() +print(len(a)) +a = Clist2([1, 2, 3]) +print(len(a)) + +#a = Ctuple2() +#print(len(a)) +#a = Ctuple2([1, 2, 3]) +#print(len(a)) -- cgit v1.2.3 From 5a12137c3e766451d83e6598ba93d16e0a8cbde8 Mon Sep 17 00:00:00 2001 From: Paul Sokolovsky Date: Tue, 29 Apr 2014 03:28:31 +0300 Subject: tests: Add test for accessing attribute of inherited native type. --- tests/basics/subclass-native3.py | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 tests/basics/subclass-native3.py (limited to 'tests') diff --git a/tests/basics/subclass-native3.py b/tests/basics/subclass-native3.py new file mode 100644 index 000000000..5d443cf5c --- /dev/null +++ b/tests/basics/subclass-native3.py @@ -0,0 +1,8 @@ +class MyExc(Exception): + pass + +e = MyExc(100, "Some error") +print(e) +# TODO: Prints native base class name +#print(repr(e)) +print(e.args) -- cgit v1.2.3 From c963310123765baddf638c8d08b8fdb2f73b6ba6 Mon Sep 17 00:00:00 2001 From: Paul Sokolovsky Date: Wed, 30 Apr 2014 02:17:45 +0300 Subject: tests: Add test for calling inherited native method on subclass. --- tests/basics/subclass-native4.py | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 tests/basics/subclass-native4.py (limited to 'tests') diff --git a/tests/basics/subclass-native4.py b/tests/basics/subclass-native4.py new file mode 100644 index 000000000..b426793f5 --- /dev/null +++ b/tests/basics/subclass-native4.py @@ -0,0 +1,9 @@ +# Test calling non-special method inherited from native type + +class mylist(list): + pass + +l = mylist([1, 2, 3]) +print(l) +l.append(10) +print(l) -- cgit v1.2.3