|
- unit uutlVariantEnumTest;
-
- {$mode objfpc}{$H+}
-
- interface
-
- uses
- Classes, SysUtils, TestFramework,
- uutlVariantEnum;
-
- type
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- TutlVariantEnumTest = class(TTestCase)
- published
- procedure VariantToString;
- procedure VariantToEnum;
- procedure VariantToInt;
- end;
-
- implementation
-
- uses
- uutlGenerics;
-
- type
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- TTestEnum = (
- teTest2 = 2,
- teTest3 = 3,
- teTest5 = 5,
- teTest9 = 9
- );
- TTestEnumH = specialize TutlEnumHelper<TTestEnum>;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //TutlVariantEnumTest///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlVariantEnumTest.VariantToString;
- begin
- AssertEquals('2', String(VarMakeEnum(Ord(teTest2))));
- AssertEquals('3', String(VarMakeEnum(Ord(teTest3))));
- AssertEquals('5', String(VarMakeEnum(Ord(teTest5))));
- AssertEquals('9', String(VarMakeEnum(Ord(teTest9))));
-
- AssertEquals('teTest2', String(VarMakeEnum(Ord(teTest2), TTestEnumH)));
- AssertEquals('teTest3', String(VarMakeEnum(Ord(teTest3), TTestEnumH)));
- AssertEquals('teTest5', String(VarMakeEnum(Ord(teTest5), TTestEnumH)));
- AssertEquals('teTest9', String(VarMakeEnum(Ord(teTest9), TTestEnumH)));
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlVariantEnumTest.VariantToEnum;
- var
- e: TTestEnum;
- begin
- AssertTrue (TTestEnumH.TryToEnum(VarMakeEnum(Ord(teTest2)), e, true));
- AssertEquals(Integer(teTest2), Integer(e));
- AssertTrue (TTestEnumH.TryToEnum(VarMakeEnum(Ord(teTest3)), e, true));
- AssertEquals(Integer(teTest3), Integer(e));
- AssertTrue (TTestEnumH.TryToEnum(VarMakeEnum(Ord(teTest5)), e, true));
- AssertEquals(Integer(teTest5), Integer(e));
- AssertTrue (TTestEnumH.TryToEnum(VarMakeEnum(Ord(teTest9)), e, true));
- AssertEquals(Integer(teTest9), Integer(e));
-
- AssertTrue (TTestEnumH.TryToEnum(VarMakeEnum(Ord(teTest2), TTestEnumH), e, true));
- AssertEquals(Integer(teTest2), Integer(e));
- AssertTrue (TTestEnumH.TryToEnum(VarMakeEnum(Ord(teTest3), TTestEnumH), e, true));
- AssertEquals(Integer(teTest3), Integer(e));
- AssertTrue (TTestEnumH.TryToEnum(VarMakeEnum(Ord(teTest5), TTestEnumH), e, true));
- AssertEquals(Integer(teTest5), Integer(e));
- AssertTrue (TTestEnumH.TryToEnum(VarMakeEnum(Ord(teTest9), TTestEnumH), e, true));
- AssertEquals(Integer(teTest9), Integer(e));
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlVariantEnumTest.VariantToInt;
- begin
- // cause of a bug in FPC this test will always fail with a invalid cast exception
-
- AssertEquals(2, Integer(VarMakeEnum(Ord(teTest2))));
- AssertEquals(3, Integer(VarMakeEnum(Ord(teTest3))));
- AssertEquals(5, Integer(VarMakeEnum(Ord(teTest5))));
- AssertEquals(9, Integer(VarMakeEnum(Ord(teTest9))));
-
- AssertEquals(2, Integer(VarMakeEnum(Ord(teTest2), TTestEnumH)));
- AssertEquals(3, Integer(VarMakeEnum(Ord(teTest3), TTestEnumH)));
- AssertEquals(5, Integer(VarMakeEnum(Ord(teTest5), TTestEnumH)));
- AssertEquals(9, Integer(VarMakeEnum(Ord(teTest9), TTestEnumH)));
- end;
-
- initialization
- RegisterTest(TutlVariantEnumTest.Suite);
- end.
|