#define CODE_ANALYSIS #pragma warning disable 1591 using System; using System.Diagnostics.CodeAnalysis; namespace TestSuite { [SuppressMessage("Gendarme.Rules.Portability", "DoNotHardcodePathsRule")] public static class TestEinaValue { public static void TestByteSimple() { using (Eina.Value v = new Eina.Value(Eina.ValueType.Byte)) { byte val = 0xff; Test.Assert(v.Set(val)); byte x; Test.Assert(v.Get(out x)); Test.AssertEquals(val, x); } } public static void TestSByteSimple() { using (Eina.Value v = new Eina.Value(Eina.ValueType.SByte)) { sbyte val = -45; Test.Assert(v.Set(val)); sbyte x; Test.Assert(v.Get(out x)); Test.AssertEquals(val, x); } } public static void TestShortSimple() { using (Eina.Value v = new Eina.Value(Eina.ValueType.Short)) { short val = -128; Test.Assert(v.Set(val)); short x; Test.Assert(v.Get(out x)); Test.AssertEquals(val, x); } } public static void TestUShortSimple() { using (Eina.Value v = new Eina.Value(Eina.ValueType.UShort)) { ushort val = 0xff55; Test.Assert(v.Set(val)); ushort x; Test.Assert(v.Get(out x)); Test.AssertEquals(val, x); } } public static void TestLongSimple() { using (Eina.Value v = new Eina.Value(Eina.ValueType.Long)) { long val = 0xdeadbeef; Test.Assert(v.Set(val)); long x; Test.Assert(v.Get(out x)); Test.AssertEquals(val, x); } } public static void TestULongSimple() { using (Eina.Value v = new Eina.Value(Eina.ValueType.ULong)) { ulong val = 0xdeadbeef; Test.Assert(v.Set(val)); ulong x; Test.Assert(v.Get(out x)); Test.AssertEquals(val, x); } } public static void TestFloatSimple() { using (Eina.Value v = new Eina.Value(Eina.ValueType.Float)) { float val = 1.609344f; Test.Assert(v.Set(val)); float x; Test.Assert(v.Get(out x)); Test.AssertAlmostEquals(val, x); } } public static void TestDoubleSimple() { using (Eina.Value v = new Eina.Value(Eina.ValueType.Double)) { double val = 1.609344; Test.Assert(v.Set(val)); double x; Test.Assert(v.Get(out x)); Test.AssertAlmostEquals(val, x); } } public static void TestIntSimple() { using (Eina.Value v = new Eina.Value(Eina.ValueType.Int32)) { Test.Assert(v.Set(32)); int x; Test.Assert(v.Get(out x)); Test.AssertEquals(32, x); Test.Assert(v.Set(-45)); Test.Assert(v.Get(out x)); Test.AssertEquals(-45, x); } } public static void TestUIntSimple() { using (Eina.Value v = new Eina.Value(Eina.ValueType.Int32)) { Test.Assert(v.Set(0xdeadbeef)); uint x = 0; Test.Assert(v.Get(out x)); Test.AssertEquals(0xdeadbeef, x); } } public static void TestStringSimple() { using (Eina.Value v = new Eina.Value(Eina.ValueType.String)) { string expected_str = "Hello"; Test.Assert(v.Set(expected_str)); string str = null; Test.Assert(v.Get(out str)); Test.AssertEquals(expected_str, str); } } public static void TestErrorSimple() { using (Eina.Value v = new Eina.Value(Eina.ValueType.Error)) { Eina.Error error = new Eina.Error(Eina.Error.NO_ERROR); Test.Assert(v.Set(error)); Eina.Error x; Test.Assert(v.Get(out x)); Test.AssertEquals(error, x); } } public static void TestSetWrongType() { using (Eina.Value v = new Eina.Value(Eina.ValueType.String)) { Test.AssertRaises(() => v.Set(42)); Test.AssertNotRaises(() => v.Set("Wumpus")); Test.Assert(v.Setup(Eina.ValueType.Int32)); Test.AssertRaises(() => v.Set("Wat?")); Test.AssertNotRaises(() => v.Set(1984)); } } public static void TestValueSetup() { using (Eina.Value v = new Eina.Value(Eina.ValueType.Int32)) { Test.Assert(v.Set(44)); int x = 0; Test.Assert(v.Get(out x)); Test.AssertEquals(44, x); v.Setup(Eina.ValueType.String); string str = "Hello"; Test.Assert(v.Get(out str)); Test.AssertNull(str); } } public static void TestValueDispose() { Eina.Value v = new Eina.Value(Eina.ValueType.Int32); v.Dispose(); Test.AssertRaises(v.Flush); Test.AssertRaises(() => v.ToString()); Test.AssertRaises(() => v.Set(24)); } public static void TestValueFlush() { using (Eina.Value v = new Eina.Value(Eina.ValueType.Int32)) { Test.Assert(v.Set(44)); Test.Assert(!v.Flushed); v.Flush(); Test.Assert(v.Flushed); int x; Test.AssertRaises(() => v.Get(out x)); x = 42; Test.AssertRaises(() => v.Set(x)); v.Setup(Eina.ValueType.String); Test.AssertNotRaises(() => v.Set("Hello, EFL")); string y = String.Empty; Test.AssertNotRaises(() => v.Get(out y)); v.Flush(); Test.AssertRaises(() => v.Get(out y)); v.Setup(Eina.ValueType.Array, Eina.ValueType.UInt32); Test.AssertNotRaises(() => v.Append(42)); v.Flush(); Test.AssertRaises(() => v.Append(42)); Test.AssertRaises(() => v.GetValueSubType()); } } private delegate bool BoolRet(); public static void TestValueOptionalInt() { using (Eina.Value a = new Eina.Value(Eina.ValueType.Optional)) { Test.Assert(a.Optional); Test.Assert(a.OptionalEmpty); // By default, optional values are empty // Sets expectation int expected = 1984; Test.Assert(a.Set(expected)); Test.Assert(a.Optional); Test.Assert(!a.OptionalEmpty); Test.Assert(a.Reset()); Test.Assert(a.OptionalEmpty); expected = -4891; Test.Assert(a.Set(expected)); // Set() automatically infers the subtype from the argument. Test.Assert(!a.OptionalEmpty); int actual = 0; Test.Assert(a.Get(out actual)); Test.AssertEquals(expected, actual); } } public static void TestValueOptionalUint() { using (Eina.Value a = new Eina.Value(Eina.ValueType.Optional)) { Test.Assert(a.Optional); Test.Assert(a.OptionalEmpty); // By default, optional values are empty // Sets expectation uint expected = 1984; Test.Assert(a.Set(expected)); Test.Assert(a.Optional); Test.Assert(!a.OptionalEmpty); Test.Assert(a.Reset()); Test.Assert(a.OptionalEmpty); expected = 0xdeadbeef; Test.Assert(a.Set(expected)); Test.Assert(!a.OptionalEmpty); uint actual = 0; Test.Assert(a.Get(out actual)); Test.AssertEquals(expected, actual); } } public static void TestValueOptionalString() { using (Eina.Value a = new Eina.Value(Eina.ValueType.Int32)) { Test.Assert(!a.Optional); BoolRet dummy = () => a.OptionalEmpty; Test.AssertRaises(() => dummy()); } using (Eina.Value a = new Eina.Value(Eina.ValueType.Optional)) { Test.Assert(a.Optional); Test.Assert(a.OptionalEmpty); // By default, optional values are empty // Sets expectation string expected = "Hello, world!"; Test.Assert(a.Set(expected)); Test.Assert(a.Optional); Test.Assert(!a.OptionalEmpty); Test.Assert(a.Reset()); Test.Assert(a.OptionalEmpty); expected = "!dlrow olleH"; Test.Assert(a.Set(expected)); Test.Assert(!a.OptionalEmpty); string actual = String.Empty; Test.Assert(a.Get(out actual)); Test.AssertEquals(expected, actual); } } public static void TestValueOptionalArrays() { using (Eina.Value a = new Eina.Value(Eina.ValueType.Optional)) using (Eina.Value expected = new Eina.Value(Eina.ValueType.Array, Eina.ValueType.Int32)) { Test.Assert(a.Optional); Test.Assert(a.OptionalEmpty); // By default, optional values are empty // Sets expectation Test.Assert(expected.Append(-1)); Test.Assert(expected.Append(0)); Test.Assert(expected.Append(2)); Test.Assert(a.Set(expected)); Test.Assert(a.Optional); Test.Assert(!a.OptionalEmpty); Test.Assert(a.Reset()); Test.Assert(a.OptionalEmpty); expected.Append(-42); Test.Assert(a.Set(expected)); Test.Assert(!a.OptionalEmpty); Eina.Value actual = null; Test.Assert(a.Get(out actual)); Test.AssertEquals(expected, actual); Test.Assert(a.Reset()); Test.Assert(a.Set(expected)); } } public static void TestValueOptionalLists() { using (Eina.Value a = new Eina.Value(Eina.ValueType.Optional)) using (Eina.Value expected = new Eina.Value(Eina.ValueType.List, Eina.ValueType.Int32)) { Test.Assert(a.Optional); Test.Assert(a.OptionalEmpty); // By default, optional values are empty // Sets expectation Test.Assert(expected.Append(-1)); Test.Assert(expected.Append(0)); Test.Assert(expected.Append(2)); Test.Assert(a.Set(expected)); Test.Assert(a.Optional); Test.Assert(!a.OptionalEmpty); Test.Assert(a.Reset()); Test.Assert(a.OptionalEmpty); expected.Append(-42); Test.Assert(a.Set(expected)); Test.Assert(!a.OptionalEmpty); Eina.Value actual = null; Test.Assert(a.Get(out actual)); Test.AssertEquals(expected, actual); } } public static void TestValueCompareInts() { using (Eina.Value a = new Eina.Value(Eina.ValueType.Int32)) using (Eina.Value b = new Eina.Value(Eina.ValueType.Int32)) { Test.Assert(a.Set(123)); Test.Assert(b.Set(123)); Test.AssertEquals(0, a.CompareTo(b)); Test.Assert(a.Set(-10)); Test.AssertLessThan(a, b); Test.Assert(a.Set(123)); Test.Assert(b.Set(10)); Test.AssertGreaterThan(a, b); } } public static void TestValueComparisonEquals() { using (Eina.Value a = new Eina.Value(Eina.ValueType.Int32)) using (Eina.Value b = new Eina.Value(Eina.ValueType.Int32)) using (Eina.Value c = new Eina.Value(Eina.ValueType.Int32)) { Test.Assert(a.Set(1)); Test.Assert(b.Set(1)); Test.Assert(c.Set(1)); Test.Assert(a.Equals(a), "A equals A"); Test.Assert(a.Equals(b) == b.Equals(a), "A equals B == B equals A"); Test.Assert(a.Equals(b) == b.Equals(c) == a.Equals(c)); Test.Assert(b.Set(0)); Test.Assert(a.Equals(b) == b.Equals(a), "A equals B == B equals A"); Test.Assert(a.Equals(null) == false, "A == null"); } } public static void TestValueComparisonOverloadEquals() { using (Eina.Value a = new Eina.Value(Eina.ValueType.Int32)) using (Eina.Value b = new Eina.Value(Eina.ValueType.Int32)) { Test.Assert(a.Set(1)); Test.Assert(b.Set(1)); Test.Assert(a == b); Test.Assert(!(a != b)); Test.Assert(b == a); Test.Assert(!(b != a)); Test.Assert(b.Set(42)); Test.Assert(a != b); Test.Assert(!(a == b)); Test.Assert(b != a); Test.Assert(!(b == a)); Test.Assert(b.Set(42)); } } public static void TestValueComparisonOverloadLessMore() { using (Eina.Value a = new Eina.Value(Eina.ValueType.Int32)) using (Eina.Value b = new Eina.Value(Eina.ValueType.Int32)) { Test.Assert(a.Set(1)); Test.Assert(b.Set(0)); Test.Assert(a > b); Test.Assert(!(a < b)); Test.Assert(b < a); Test.Assert(!(b > a)); } } public static void TestValueCompareStrings() { using (Eina.Value a = new Eina.Value(Eina.ValueType.String)) using (Eina.Value b = new Eina.Value(Eina.ValueType.String)) { Test.Assert(a.Set("aaa")); Test.Assert(b.Set("aaa")); Test.AssertEquals(0, a.CompareTo(b)); Test.Assert(a.Set("abc")); Test.Assert(b.Set("acd")); Test.AssertLessThan(a, b); Test.Assert(a.Set("acd")); Test.Assert(b.Set("abc")); Test.AssertGreaterThan(a, b); } } public static void TestValueCompareArray() { using(Eina.Value a = new Eina.Value(Eina.ValueType.Array, Eina.ValueType.Int32)) using(Eina.Value b = new Eina.Value(Eina.ValueType.Array, Eina.ValueType.Int32)) { Test.AssertEquals(a, b); Test.Assert(a.Append(0)); Test.Assert(a.Append(1)); Test.Assert(a.Append(5)); Test.Assert(a.Append(42)); Test.Assert(b.Append(0)); Test.Assert(b.Append(1)); Test.Assert(b.Append(5)); Test.Assert(b.Append(42)); Test.AssertEquals(a, b); a[0] = -1; Test.Assert(!a.Equals(b)); Test.AssertLessThan(a, b); a[0] = 10; Test.AssertGreaterThan(a, b); a[0] = 0; Test.AssertEquals(a, b); // bigger arrays are greater Test.Assert(b.Append(0)); Test.AssertLessThan(a, b); Test.Assert(a.Append(0)); Test.Assert(a.Append(0)); Test.AssertGreaterThan(a, b); // bigger arrays are greater, unless an element says other wise b[0] = 10; Test.AssertGreaterThan(b, a); } } public static void TestValueCompareList() { using(Eina.Value a = new Eina.Value(Eina.ValueType.List, Eina.ValueType.Int32)) using(Eina.Value b = new Eina.Value(Eina.ValueType.List, Eina.ValueType.Int32)) { Test.AssertEquals(a, b); Test.Assert(a.Append(0)); Test.Assert(a.Append(1)); Test.Assert(a.Append(5)); Test.Assert(a.Append(42)); Test.Assert(b.Append(0)); Test.Assert(b.Append(1)); Test.Assert(b.Append(5)); Test.Assert(b.Append(42)); Test.AssertEquals(a, b); a[0] = -1; Test.Assert(!a.Equals(b)); Test.AssertLessThan(a, b); a[0] = 10; Test.AssertGreaterThan(a, b); a[0] = 0; Test.AssertEquals(a, b); // bigger arrays are greater Test.Assert(b.Append(0)); Test.AssertLessThan(a, b); Test.Assert(a.Append(0)); Test.Assert(a.Append(0)); Test.AssertGreaterThan(a, b); // bigger arrays are greater, unless an element says other wise b[0] = 10; Test.AssertGreaterThan(b, a); } } /* public static void TestValueCompareHash() */ /* { */ /* Test.Assert(false, "Implement me."); */ /* } */ public static void TestValueToString() { using(Eina.Value a = new Eina.Value(Eina.ValueType.Int32)) { int i = -12345; string x = $"{i}"; Test.Assert(a.Set(i)); Test.AssertEquals(x, a.ToString()); uint u = 0xdeadbeef; x = $"{u}"; Test.Assert(a.Setup(Eina.ValueType.UInt32)); Test.Assert(a.Set(u)); Test.AssertEquals(x, a.ToString()); string s = "Hello, Johnny!"; x = s; Test.Assert(a.Setup(Eina.ValueType.String)); Test.Assert(a.Set(s)); Test.AssertEquals(x, a.ToString()); } } public static void TestValueConvertInt() { using(Eina.Value from = new Eina.Value(Eina.ValueType.Int32)) using(Eina.Value to = new Eina.Value(Eina.ValueType.UInt32)) { int source = 0x7FFFFFFF; uint target_uint; int target_int; string target_str; string source_str = $"{source}"; Test.Assert(from.Set(source)); Test.Assert(from.ConvertTo(to)); Test.Assert(to.Get(out target_uint)); Test.AssertEquals(target_uint, (uint)source); Test.Assert(to.Setup(Eina.ValueType.Int32)); Test.Assert(from.ConvertTo(to)); Test.Assert(to.Get(out target_int)); Test.AssertEquals(target_int, source); Test.Assert(to.Setup(Eina.ValueType.String)); Test.Assert(from.ConvertTo(to)); Test.Assert(to.Get(out target_str)); Test.AssertEquals(target_str, source_str); // FIXME Add tests for failing ConvertTo() calls when downcasting // to smaller types } } public static void TestValueConvertUInt() { using(Eina.Value from = new Eina.Value(Eina.ValueType.UInt32)) using(Eina.Value to = new Eina.Value(Eina.ValueType.UInt32)) { uint source = 0xFFFFFFFF; uint target_uint; string target_str; string source_str = $"{source}"; Test.Assert(from.Set(source)); Test.Assert(from.ConvertTo(to)); Test.Assert(to.Get(out target_uint)); Test.AssertEquals(target_uint, source); Test.Assert(to.Setup(Eina.ValueType.Int32)); Test.Assert(!from.ConvertTo(to)); Test.Assert(to.Setup(Eina.ValueType.String)); Test.Assert(from.ConvertTo(to)); Test.Assert(to.Get(out target_str)); Test.AssertEquals(target_str, source_str); // FIXME Add tests for failing ConvertTo() calls when downcasting // to smaller types } } public static void TestValueContainerConstructorWrongArgs() { Test.AssertRaises(() => { using(Eina.Value array = new Eina.Value(Eina.ValueType.String, Eina.ValueType.String)) { } }); } public static void TestValueContainerWithNonContainerAccess() { using(Eina.Value array = new Eina.Value(Eina.ValueType.Int32)) { Test.AssertRaises(() => array[0] = 1); object val = null; Test.AssertRaises(() => val = array[0]); } } public static void TestValueArray() { using(Eina.Value array = new Eina.Value(Eina.ValueType.Array, Eina.ValueType.Int32)) { Test.AssertEquals(0, array.Count()); Test.Assert(array.Append(0)); Test.AssertEquals(1, array.Count()); Test.Assert(array.Append(1)); Test.AssertEquals(2, array.Count()); Test.Assert(array.Append(5)); Test.AssertEquals(3, array.Count()); Test.Assert(array.Append(42)); Test.AssertEquals(4, array.Count()); Test.AssertEquals((int)array[0], 0); Test.AssertEquals((int)array[1], 1); Test.AssertEquals((int)array[2], 5); Test.AssertEquals((int)array[3], 42); array[0] = 1984; array[1] = -42; Test.AssertEquals(4, array.Count()); Test.AssertEquals((int)array[0], 1984); Test.AssertEquals((int)array[1], -42); Test.AssertEquals((int)array[2], 5); Test.AssertEquals((int)array[3], 42); Test.AssertEquals("[1984, -42, 5, 42]", array.ToString()); } using(Eina.Value array = new Eina.Value(Eina.ValueType.Array, Eina.ValueType.UInt32)) { Test.Assert(array.Append(2)); Test.AssertEquals((uint)array[0], (uint)2); Test.AssertRaises(() => array[0] = -1); } using(Eina.Value array = new Eina.Value(Eina.ValueType.Array, Eina.ValueType.String)) { Test.Assert(array.Append("hello")); Test.Assert(array.Append("world")); Test.AssertEquals((string)array[0], "hello"); Test.AssertEquals((string)array[1], "world"); array[0] = "efl"; array[1] = "rocks"; Test.AssertEquals((string)array[0], "efl"); Test.AssertEquals((string)array[1], "rocks"); } } public static void TestArrayOutOfBounds() { using(Eina.Value array = new Eina.Value(Eina.ValueType.Array, Eina.ValueType.Int32)) { object placeholder = null; Test.AssertRaises(() => array[0] = 1); Test.AssertRaises(() => placeholder = array[0]); Test.Assert(array.Append(0)); Test.AssertNotRaises(() => array[0] = 1); Test.AssertNotRaises(() => placeholder = array[0]); Test.AssertRaises(() => array[1] = 1); Test.AssertRaises(() => placeholder = array[1]); Test.Assert(array.Append(0)); Test.AssertNotRaises(() => array[1] = 1); Test.AssertNotRaises(() => placeholder = array[1]); } } public static void TestValueArraySubType() { using(Eina.Value array = new Eina.Value(Eina.ValueType.Array, Eina.ValueType.Int32)) Test.AssertEquals(Eina.ValueType.Int32, array.GetValueSubType()); using(Eina.Value array = new Eina.Value(Eina.ValueType.Array, Eina.ValueType.UInt32)) Test.AssertEquals(Eina.ValueType.UInt32, array.GetValueSubType()); } public static void TestValueArrayConvert() { using(Eina.Value array = new Eina.Value(Eina.ValueType.Array, Eina.ValueType.Int32)) using(Eina.Value other = new Eina.Value(Eina.ValueType.Int32)) { other.Set(100); other.ConvertTo(array); Test.AssertEquals(100, (int)array[0]); Test.AssertEquals("[100]", array.ToString()); } } public static void TestValueList() { using(Eina.Value list = new Eina.Value(Eina.ValueType.List, Eina.ValueType.Int32)) { Test.AssertEquals(0, list.Count()); Test.Assert(list.Append(0)); Test.AssertEquals(1, list.Count()); Test.Assert(list.Append(1)); Test.AssertEquals(2, list.Count()); Test.Assert(list.Append(5)); Test.AssertEquals(3, list.Count()); Test.Assert(list.Append(42)); Test.AssertEquals(4, list.Count()); Test.AssertEquals((int)list[0], 0); Test.AssertEquals((int)list[1], 1); Test.AssertEquals((int)list[2], 5); Test.AssertEquals((int)list[3], 42); list[0] = 1984; list[1] = -42; Test.AssertEquals(4, list.Count()); Test.AssertEquals((int)list[0], 1984); Test.AssertEquals((int)list[1], -42); Test.AssertEquals((int)list[2], 5); Test.AssertEquals((int)list[3], 42); Test.AssertEquals("[1984, -42, 5, 42]", list.ToString()); } using(Eina.Value list = new Eina.Value(Eina.ValueType.List, Eina.ValueType.UInt32)) { Test.Assert(list.Append(2)); Test.AssertEquals((uint)list[0], (uint)2); Test.AssertRaises(() => list[0] = -1); } using(Eina.Value list = new Eina.Value(Eina.ValueType.List, Eina.ValueType.String)) { Test.Assert(list.Append("hello")); Test.Assert(list.Append("world")); Test.AssertEquals((string)list[0], "hello"); Test.AssertEquals((string)list[1], "world"); list[0] = "efl"; list[1] = "rocks"; Test.AssertEquals((string)list[0], "efl"); Test.AssertEquals((string)list[1], "rocks"); } } public static void TestListOutOfBounds() { using(Eina.Value list = new Eina.Value(Eina.ValueType.List, Eina.ValueType.Int32)) { object placeholder = null; Test.AssertRaises(() => list[0] = 1); Test.AssertRaises(() => placeholder = list[0]); Test.Assert(list.Append(0)); Test.AssertNotRaises(() => list[0] = 1); Test.AssertNotRaises(() => placeholder = list[0]); Test.AssertRaises(() => list[1] = 1); Test.AssertRaises(() => placeholder = list[1]); Test.Assert(list.Append(0)); Test.AssertNotRaises(() => list[1] = 1); Test.AssertNotRaises(() => placeholder = list[1]); } } public static void TestValueListSubType() { using(Eina.Value list = new Eina.Value(Eina.ValueType.List, Eina.ValueType.Int32)) Test.AssertEquals(Eina.ValueType.Int32, list.GetValueSubType()); using(Eina.Value list = new Eina.Value(Eina.ValueType.List, Eina.ValueType.UInt32)) Test.AssertEquals(Eina.ValueType.UInt32, list.GetValueSubType()); } public static void TestValueListConvert() { using(Eina.Value list = new Eina.Value(Eina.ValueType.List, Eina.ValueType.Int32)) using(Eina.Value other = new Eina.Value(Eina.ValueType.Int32)) { other.Set(100); other.ConvertTo(list); Test.AssertEquals(100, (int)list[0]); Test.AssertEquals("[100]", list.ToString()); } } public static void TestStringThroughValue() { // Check if Value_Native->Value doesn't try to free the pointed string. using(Eina.Value value_ptr = new Eina.Value(Eina.ValueType.String)) { string payload = "Something"; value_ptr.Set(payload); Eina.ValueNative byvalue = value_ptr; Eina.Value another_value_ptr = byvalue; Test.AssertEquals(value_ptr, another_value_ptr); } } public static void TestValueEmpty() { using (Eina.Value empty = new Eina.Value(Eina.ValueType.Empty)) { Test.Assert(empty.Empty, "Value must be empty"); empty.Setup(Eina.ValueType.Int32); // Values already set-up are not empty. For this kind of empty, use Optional Test.Assert(!empty.Empty, "Values already set-up must not be empty."); empty.Set(42); Test.Assert(!empty.Empty, "Values with payload must not be empty."); } } public static void TestValueCopy() { Eina.Value v2 = null; int raw_val = 42; using (Eina.Value v = new Eina.Value(Eina.ValueType.Int32)) { Test.Assert(v.Set(raw_val)); v2 = new Eina.Value(v); } int rec_val; Test.Assert(v2.Get(out rec_val)); Test.AssertEquals(raw_val, rec_val); } // FIXME Add remaining list tests /* public static void TestValueHash() { */ /* Test.Assert(false, "Implement me."); */ /* } */ /* public static void TestValueTimeVal() { */ /* Test.Assert(false, "Implement me."); */ /* } */ /* public static void TestValueBlob() { */ /* Test.Assert(false, "Implement me."); */ /* } */ /* public static void TestValueStruct() { */ /* Test.Assert(false, "Implement me."); */ /* } */ /* public static void TestValueArrayOfStructs() { */ /* Test.Assert(false, "Implement me."); */ /* } */ /* public static void TestValueOptionalStructMembers() { */ /* Test.Assert(false, "Implement me."); */ /* } */ } #pragma warning restore 1591 }