From: Jean Privat Date: Fri, 24 Apr 2015 07:50:09 +0000 (+0700) Subject: tests: clean and complete test_ffi_c_operators X-Git-Tag: v0.7.4~3^2 X-Git-Url: http://nitlanguage.org tests: clean and complete test_ffi_c_operators thanks nitpretty! Signed-off-by: Jean Privat --- diff --git a/tests/sav/test_ffi_c_operators.res b/tests/sav/test_ffi_c_operators.res index 893e1ea..e33ddb5 100644 --- a/tests/sav/test_ffi_c_operators.res +++ b/tests/sav/test_ffi_c_operators.res @@ -1,10 +1,14 @@ +test_ffi_c_operators.nit:139,7--15: Warning: expression is not null, since it is a `A`. 11 +123 9 +-123 22 3 false false false +false true 3 4096 @@ -22,7 +26,9 @@ true true 32 8 +7 +5 +2 +-4 52 456 -123 --123 diff --git a/tests/test_ffi_c_operators.nit b/tests/test_ffi_c_operators.nit index 5261b5e..80a3025 100644 --- a/tests/test_ffi_c_operators.nit +++ b/tests/test_ffi_c_operators.nit @@ -15,11 +15,11 @@ # limitations under the License. class A - var value : Int + var value: Int - init ( value : Int ) do self.value = value + init(value: Int) do self.value = value - fun +( other : A ) : A import value, A `{ + fun +(other: A): A import value, A `{ int s = A_value( recv ); int o = A_value( other ); @@ -31,7 +31,7 @@ class A return new_A(+s); `} - fun -( other : A ) : A import value, A `{ + fun -(other: A): A import value, A `{ int s = A_value( recv ); int o = A_value( other ); @@ -43,19 +43,19 @@ class A return new_A(-s); `} - fun *( by : Int ) : A import value, A `{ + fun *(by: Int): A import value, A `{ int s = A_value( recv ); return new_A( s * by ); `} - fun /( by : Int ) : A import value, A `{ + fun /(by: Int): A import value, A `{ int s = A_value( recv ); return new_A( s / by ); `} - redef fun ==( other ) import value, nullable Object.as(A) `{ + redef fun ==(other) import value, nullable Object.as(A) `{ if ( nullable_Object_is_a_A( other ) && A_value( nullable_Object_as_A(other) ) == A_value( recv ) ) return 1; @@ -63,112 +63,114 @@ class A return 0; `} - fun %( other : A ) : A import value, A `{ + fun %(other: A): A import value, A `{ return new_A( A_value( recv ) % A_value( other ) ); `} -# fun +=( other : A ) : A import value, value=, A `{ -# int new_val = A_value( recv ) + A_value( other ); -# A_value__assign( recv, new_val ); -# return new_A( new_val ); -# `} - -# fun -=( other : A ) : A import +=, A, value `{ -# A inv_other = new_A( -1*A_value( other ) ); -# return A__plus_equal( recv, int_other ); -# `} - - fun <=>( other : A ) : A import value, A `{ + fun <=>(other: A): A import value, A `{ return new_A( A_value( recv )* 1024 ); `} -# fun @( other : A ) : A import value, A `{ -# return new_A( A_value( recv )* 1000 ); -# `} - - fun >( other : A ) : Bool import value `{ + fun >(other: A): Bool import value `{ return A_value( recv ) > A_value( other ); `} - fun <( other : A ) : Bool import value `{ + fun <(other: A): Bool import value `{ return A_value( recv ) < A_value( other ); `} - fun >=( other : A ) : Bool import value `{ + fun >=(other: A): Bool import value `{ return A_value( recv ) >= A_value( other ); `} - fun <=( other : A ) : Bool import value `{ + fun <=(other: A): Bool import value `{ return A_value( recv ) <= A_value( other ); `} - fun >>( other : A ): A import value, value=, A `{ + fun >>(other: A): A import value, value=, A `{ int new_val = A_value( recv ) >> A_value( other ); - A_value__assign( recv, new_val ); - return recv; + return new_A(new_val); `} - fun <<( other : A ): A import value, A `{ + fun <<(other: A): A import value, A `{ int new_val = A_value( recv ) << A_value( other ); - A_value__assign( recv, new_val ); - return recv; + return new_A(new_val); + `} + + fun |(other: A): A import value, A `{ + int new_val = A_value( recv ) | A_value( other ); + return new_A(new_val); + `} + + fun ^(other: A): A import value, A `{ + int new_val = A_value( recv ) ^ A_value( other ); + return new_A(new_val); + `} + + fun ~: A import value, A `{ + int new_val = ~A_value( recv ); + return new_A(new_val); `} - fun []( index : Int ) : A import A `{ + fun &(other: A): A import value, A `{ + int new_val = A_value( recv ) & A_value( other ); + return new_A(new_val); + `} + + fun [](index: Int): A import A `{ return new_A( index ); `} - fun []=( index : Int, value : A ) : A import A `{ + fun []=(index: Int, value: A): A import A `{ return new_A( index + A_value( value ) ); `} redef fun to_s do return value.to_s end -print new A( 1 ) + new A( 10 ) # 11 -print new A( 10 ) - new A( 1 ) # 9 +print new A(1) + new A(10) # 11 +print +new A(123) +print new A(10) - new A(1) # 9 +print -new A(123) -print new A( 2 ) * 11 # 22 -print new A( 33 ) / 11 # 3 +print new A(2) * 11 # 22 +print new A(33) / 11 # 3 -#print new A( 44 ) == null # false -print new A( 55 ) == 55 # false -print new A( 33 ) == new A( 11 ) # false -print new A( 22 ) == new A( 77 ) # false -print new A( 11 ) == new A( 11 ) # true +print new A(44) == null # false +print new A(55) == 55 # false +print new A(33) == new A(11) # false +print new A(22) == new A(77) # false +print new A(11) == new A(11) # true -print new A( 147 ) % new A( 12 ) # 3 -print new A( 4 ) <=> new A( 123 ) # 4096 +print new A(147) % new A(12) # 3 +print new A(4) <=> new A(123) # 4096 -print new A( 1 ) < new A( 100 ) # true -print new A( 100 ) < new A( 100 ) # false -print new A( 100 ) < new A( 1 ) # false +print new A(1) < new A(100) # true +print new A(100) < new A(100) # false +print new A(100) < new A(1) # false -print new A( 1 ) > new A( 100 ) # false -print new A( 100 ) > new A( 100 ) # false -print new A( 100 ) > new A( 1 ) # true +print new A(1) > new A(100) # false +print new A(100) > new A(100) # false +print new A(100) > new A(1) # true -print new A( 1 ) <= new A( 100 ) # true -print new A( 100 ) <= new A( 100 ) # true -print new A( 100 ) <= new A( 1 ) # false +print new A(1) <= new A(100) # true +print new A(100) <= new A(100) # true +print new A(100) <= new A(1) # false -print new A( 1 ) >= new A( 100 ) # false -print new A( 100 ) >= new A( 100 ) # true -print new A( 100 ) >= new A( 1 ) # true +print new A(1) >= new A(100) # false +print new A(100) >= new A(100) # true +print new A(100) >= new A(1) # true -var x = new A( 1 ) -x = x << new A( 5 ) -print x # 32 +print new A(1) << new A(5) # 32 +print new A(32) >> new A(2) # 8 -var y = new A( 32 ) -y = y >> new A( 2 ) -print y # 8 +print new A(3) | new A(6) # 7 +print new A(3) ^ new A(6) # 5 +print new A(3) & new A(6) # 2 +print ~new A(3) # -4 -var a = new A( 456 ) -print a[ 52 ] # 52 +var a = new A(456) +print a[52] # 52 -a[ 74 ] = new A( 96 ) +a[74] = new A(96) print a # 96 - -print(+(new A(123))) -print(-(new A(123)))