blob: a519a304ce028659805786f21ea7faa64793a5e8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
enum FooEnum {
FOO = 0,
BAR = 42
}
[Flags]
enum FooFlag {
FOO = 0,
BAR = 23
}
struct FooStruct {
public int i;
}
class Foo : Object {
// default ParamSpec implementations
public bool bool_prop { get; set; }
public bool bool_prop2 { get; set; default = true; }
public char char_prop { get; set; }
public char char_prop2 { get; set; default = 'c'; }
public double double_prop { get; set; }
public double double_prop2 { get; set; default = 3.1415; }
public FooEnum enum_prop { get; set; }
public FooEnum enum_prop2 { get; set; default = FooEnum.BAR; }
public FooFlag flag_prop { get; set; }
public FooFlag flag_prop2 { get; set; default = FooFlag.BAR; }
public float float_prop { get; set; }
public float float_prop2 { get; set; default = 47.11f; }
public int int_prop { get; set; }
public int int_prop2 { get; set; default = int.MIN; }
public int64 int64_prop { get; set; }
public int64 int64_prop2 { get; set; default = int64.MIN; }
public long long_prop { get; set; }
public long long_prop2 { get; set; default = long.MAX; }
public Object object_prop { get; set; }
public ParamSpec param_prop { get; set; }
public void* pointer_prop { get; set; }
public string string_prop { get; set; }
public string string_prop2 { get; set; default = "foo"; }
public uchar uchar_prop { get; set; }
public uchar uchar_prop2 { get; set; default = 'u'; }
public uint uint_prop { get; set; }
public uint uint_prop2 { get; set; default = uint.MAX; }
public uint64 uint64_prop { get; set; }
public uint64 uint64_prop2 { get; set; default = uint64.MAX; }
public ulong ulong_prop { get; set; }
public ulong ulong_prop2 { get; set; default = ulong.MAX; }
public unichar unichar_prop { get; set; }
public Type gtype_prop { get; set; }
public Type gtype_prop2 { get; set; default = typeof (string); }
//Deprecated public ValueArray value_array_prop { get; set; }
public Variant variant_prop { get; set; }
public Variant variant_prop2 { get; set; default = new Variant ("as"); }
public FooStruct struct_prop { get; set; }
public FooStruct struct_prop2 { get; set; default = FooStruct () { i = 4711 }; }
public string[] strv_prop { get; set; }
public string[] strv_prop2 { get; set; default = { "foo", "bar" }; }
}
void main () {
var foo = new Foo ();
unowned ObjectClass foo_class = foo.get_class ();
assert (foo_class.find_property ("bool-prop") is ParamSpecBoolean);
assert (foo.bool_prop2 == true);
assert (foo_class.find_property ("char-prop") is ParamSpecChar);
assert (foo.char_prop2 == 'c');
assert (foo_class.find_property ("double-prop") is ParamSpecDouble);
assert (foo.double_prop2 == 3.1415);
assert (foo_class.find_property ("enum-prop") is ParamSpecEnum);
assert (foo.enum_prop2 == FooEnum.BAR);
assert (foo_class.find_property ("flag-prop") is ParamSpecFlags);
assert (foo.flag_prop2 == FooFlag.BAR);
assert (foo_class.find_property ("float-prop") is ParamSpecFloat);
assert (foo.float_prop2 == 47.11f);
assert (foo_class.find_property ("int-prop") is ParamSpecInt);
assert (foo.int_prop2 == int.MIN);
assert (foo_class.find_property ("int64-prop") is ParamSpecInt64);
assert (foo.int64_prop2 == int64.MIN);
assert (foo_class.find_property ("long-prop") is ParamSpecLong);
assert (foo.long_prop2 == long.MAX);
assert (foo_class.find_property ("object-prop") is ParamSpecObject);
assert (foo_class.find_property ("param-prop") is ParamSpecParam);
assert (foo_class.find_property ("pointer-prop") is ParamSpecPointer);
assert (foo_class.find_property ("string-prop") is ParamSpecString);
assert (foo.string_prop2 == "foo");
assert (foo_class.find_property ("uchar-prop") is ParamSpecUChar);
assert (foo.uchar_prop2 == 'u');
assert (foo_class.find_property ("uint-prop") is ParamSpecUInt);
assert (foo.uint_prop2 == uint.MAX);
assert (foo_class.find_property ("uint64-prop") is ParamSpecUInt64);
assert (foo.uint64_prop2 == uint64.MAX);
assert (foo_class.find_property ("ulong-prop") is ParamSpecULong);
assert (foo.ulong_prop2 == ulong.MAX);
//FIXME? assert (foo_class.find_property ("unichar-prop") is ParamSpecUnichar);
assert (foo_class.find_property ("unichar-prop") is ParamSpecUInt);
assert (foo_class.find_property ("gtype-prop") is ParamSpecGType);
assert (foo.gtype_prop2 == typeof (string));
//Deprecated assert (foo_class.find_property ("value-array-prop") is ParamSpecValueArray);
assert (foo_class.find_property ("variant-prop") is ParamSpecVariant);
assert (foo.variant_prop2.is_of_type (VariantType.STRING_ARRAY));
assert (foo_class.find_property ("struct-prop") is ParamSpecBoxed);
assert (foo.struct_prop2.i == 4711);
assert (foo_class.find_property ("strv-prop") is ParamSpecBoxed);
assert (foo.strv_prop2[1] == "bar");
}
|