diff options
Diffstat (limited to 'tests/structs/structs.test')
-rw-r--r-- | tests/structs/structs.test | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/tests/structs/structs.test b/tests/structs/structs.test new file mode 100644 index 000000000..4b39feeb4 --- /dev/null +++ b/tests/structs/structs.test @@ -0,0 +1,85 @@ + +Program: test + +using GLib; + +struct SimpleStruct { + public int field; +} + +public struct PublicStruct { + public int field; +} + +struct StructWithPrivateField { + private int field; + + public void test () { + field = 1; + stdout.printf ("StructWithPrivateField: field = %d\n", field); + } +} + +struct StructWithCreationMethod { + public StructWithCreationMethod () { + stdout.printf ("StructWithCreationMethod\n"); + } + + public int field; +} + +struct StructWithNamedCreationMethod { + public StructWithNamedCreationMethod.named () { + stdout.printf ("StructWithNamedCreationMethod\n"); + } + + public int field; +} + +void test_in_parameter (SimpleStruct st) { + stdout.printf ("test_in_parameter: st.field = %d\n", st.field); +} + +void test_in_nullable_parameter (SimpleStruct? st) { + assert (st.field == 1); +} + +void test_ref_parameter (ref SimpleStruct st) { + stdout.printf ("test_ref_parameter: st.field = %d\n", st.field); + st.field++; +} + +void test_out_parameter (out SimpleStruct st) { + st = SimpleStruct (); + st.field = 3; +} + +void main () { + stdout.printf ("Structs Test:\n"); + + stdout.printf ("new SimpleStruct ()\n"); + var simple_struct = SimpleStruct (); + stdout.printf ("new PublicStruct ()\n"); + var public_struct = PublicStruct (); + stdout.printf ("new StructWithCreationMethod ()\n"); + var struct_with_creation_method = StructWithCreationMethod (); + stdout.printf ("new StructWithNamedCreationMethod ()\n"); + var struct_with_named_creation_method = StructWithNamedCreationMethod.named (); + + stdout.printf ("new SimpleStruct () { field = 1 }\n"); + simple_struct = SimpleStruct () { field = 1 }; + stdout.printf ("simple_struct.field = %d\n", simple_struct.field); + + test_in_parameter (simple_struct); + test_in_nullable_parameter (simple_struct); + test_ref_parameter (ref simple_struct); + stdout.printf ("after test_ref_parameter: st.field = %d\n", simple_struct.field); + test_out_parameter (out simple_struct); + stdout.printf ("after test_out_parameter: st.field = %d\n", simple_struct.field); + + var struct_with_private_field = StructWithPrivateField (); + struct_with_private_field.test (); + + stdout.printf (".\n"); +} + |