コード例 #1
0
ファイル: CompilerTests.cs プロジェクト: kztao/FlingOS
        public static void RunTests()
        {
            #region 1. Addition calls

            Log.WriteLine("---Addition:");
            Log.WriteLine(" 32-32");
            Log.WriteLine("  Unsigned");
            Test_Add_UInt32_Zero_UInt32_Zero();
            Test_Add_UInt32_9_UInt32_4();
            Log.WriteLine("  Signed");
            Test_Add_Int32_9_Int32_4();
            Test_Add_Int32_9_Int32_Neg4();
            Test_Add_Int32_Neg9_Int32_4();
            Test_Add_Int32_Neg9_Int32_Neg4();
            Log.WriteLine(" 64-32");
            Log.WriteLine("  Unsigned");
            Test_Add_UInt64_LargestPos_UInt32_4();
            Log.WriteLine("  Signed");
            Test_Add_Int64_LargestPos_Int32_4();
            Test_Add_Int64_LargestNeg_Int32_4();
            Test_Add_Int64_Zero_Int32_LargestNeg();
            Log.WriteLine(" 64-64");
            Log.WriteLine("  Unsigned");
            Test_Add_UInt64_Large_UInt64_Large();
            Log.WriteLine("  Signed");
            Test_Add_Int64_LargePos_Int64_4();
            Test_Add_Int64_LargePos_Int64_LargePos();
            Test_Add_Int64_LargePos_Int64_LargeNeg();
            Test_Add_Int64_LargestNeg_Int64_Neg1();
            Test_Add_Int64_LargeNeg_Int64_LargeNeg();
            Test_Add_Int64_Zero_Int64_Neg4();
            Test_Add_Int64_Zero_Int64_LargePos();
            Test_Add_Int64_Zero_Int64_LargeNeg();
            Log.WriteLine(" ");

            #endregion

            #region 2. Subtraction calls

            Log.WriteLine("---Subtraction:");
            Log.WriteLine(" 32-32");
            Log.WriteLine("  Unsigned");
            Test_Sub_UInt32_9_UInt32_4();
            Log.WriteLine("  Signed");
            Test_Sub_Int32_9_Int32_4();
            Test_Sub_Int32_9_Int32_Neg4();
            Test_Sub_Int32_Neg9_Int32_4();
            Test_Sub_Int32_Neg9_Int32_Neg4();
            Log.WriteLine(" 64-32");
            Log.WriteLine("  Unsigned");
            Test_Sub_UInt64_LargestPos_UInt32_4();
            Log.WriteLine("  Signed");
            Test_Sub_Int64_LargestPos_Int32_4();
            Test_Sub_Int64_LargestNeg_Int32_4();
            Test_Sub_Int64_Zero_Int32_4();
            Test_Sub_Int64_Zero_Int32_LargestPos();
            Test_Sub_Int64_Zero_Int32_LargestNeg();
            Log.WriteLine(" 64-64");
            Log.WriteLine("  Unsigned");
            Test_Sub_UInt64_Large_UInt64_Large();
            Log.WriteLine("  Signed");
            Test_Sub_Int64_LargePos_Int64_4();
            Test_Sub_Int64_LargePos_Int64_LargePos();
            Test_Sub_Int64_LargePos_Int64_LargeNeg();
            Test_Sub_Int64_LargestNeg_Int64_1();
            Test_Sub_Int64_LargeNeg_Int64_LargeNeg();
            Test_Sub_Int64_Zero_Int64_4();
            Test_Sub_Int64_Zero_Int64_LargePos();
            Test_Sub_Int64_Zero_Int64_LargeNeg();
            Log.WriteLine(" ");

            #endregion

            #region 3. Multiplication calls

            Log.WriteLine("---Multiplication:");
            Log.WriteLine(" 32-32");
            Log.WriteLine("  Unsigned");
            Test_Mul_UInt32_Zero_UInt3_Zero();
            Test_Mul_UInt32_9_UInt32_4();
            Log.WriteLine("  Signed");
            Test_Mul_Int32_9_Int32_4();
            Test_Mul_Int32_9_Int32_Neg4();
            Test_Mul_Int32_Neg9_Int32_4();
            Test_Mul_Int32_Neg9_Int32_Neg4();
            Log.WriteLine(" 64-32");
            Log.WriteLine("  Unsigned");
            Test_Mul_UInt64_Zero_UInt32_Zero();
            Test_Mul_UInt64_Large_UInt32_4();
            Log.WriteLine("  Signed");
            Test_Mul_Int64_Zero_Int32_LargestNeg();
            Test_Mul_Int64_Zero_Int32_LargestPos();
            Test_Mul_Int64_LargestPos_Int32_4();
            Test_Mul_Int64_LargestPos_Int32_Neg4();
            Test_Mul_Int64_LargestNeg_Int32_4();
            Test_Mul_Int64_LargestNeg_Int32_Neg4();
            Log.WriteLine(" 64-64");
            Log.WriteLine("  Unsigned");
            Test_Mul_UInt64_Large_UInt64_Large();
            Log.WriteLine("  Signed");
            Test_Mul_Int64_Zero_Int64_LargePos();
            Test_Mul_Int64_Zero_Int64_Neg4();
            Test_Mul_Int64_LargePos_Int64_4();
            Test_Mul_Int64_LargePos_Int64_Neg4();
            Test_Mul_Int64_LargeNeg_Int64_4();
            Test_Mul_Int64_LargeNeg_Int64_Neg4();
            Test_Mul_Int64_LargePos_Int64_1000();
            Test_Mul_Int64_LargeNeg_Int64_1000();
            Test_Mul_Int64_Neg1_Int64_LargePos();
            Test_Mul_Int64_Neg1_Int64_LargeNeg();
            Test_Mul_Int64_LargestPos_Int64_Neg4();
            Test_Mul_Int64_LargestNeg_Int64_Neg4();
            Log.WriteLine(" ");

            #endregion

            #region 4. Division calls

            Log.WriteLine("---Division:");
            Log.WriteLine("  Unsigned");
            Test_Div_UInt32_9_UInt32_3();
            Test_Div_UInt32_10_UInt32_3();
            Log.WriteLine("  Signed");
            Test_Div_Int32_9_Int32_3();
            Test_Div_Int32_9_Int32_Neg3();
            Test_Div_Int32_10_Int32_3();
            Test_Div_Int32_10_Int32_Neg3();
            Test_Div_Int32_Neg9_Int32_3();
            Test_Div_Int32_Neg9_Int32_Neg3();
            Test_Div_Int32_Neg10_Int32_3();
            Test_Div_Int32_Neg10_Int32_Neg3();
            Log.WriteLine(" ");

            #endregion

            #region 5. Modulus calls

            Log.WriteLine("---Modulus:");
            Log.WriteLine("  Unsigned");
            Test_Mod_UInt32_9_UInt32_3();
            Test_Mod_UInt32_10_UInt32_3();
            Log.WriteLine("  Signed");
            Test_Mod_Int32_9_Int32_3();
            Test_Mod_Int32_9_Int32_Neg3();
            Test_Mod_Int32_10_Int32_3();
            Test_Mod_Int32_10_Int32_Neg3();
            Test_Mod_Int32_Neg9_Int32_3();
            Test_Mod_Int32_Neg9_Int32_Neg3();
            Test_Mod_Int32_Neg10_Int32_3();
            Test_Mod_Int32_Neg10_Int32_Neg3();
            Log.WriteLine(" ");

            #endregion

            #region 6. Negation calls

            Log.WriteLine("---Negation:");
            Log.WriteLine(" 32");
            Log.WriteLine("  Unsigned");
            Log.WriteLine("UInt32 cannot be negated into Int32, only into Int64 in C#.");
            Test_Neg_UInt32_Small_Int64();
            Test_Neg_UInt32_Largest_Int64();
            Log.WriteLine("  Signed");
            Test_Neg_Int32_SmallPos_Int32();
            Test_Neg_Int32_SmallNeg_Int32();
            Test_Neg_Int32_LargePos_Int64();
            Test_Neg_Int32_LargeNeg_Int64();
            Log.WriteLine(" 64");
            Log.WriteLine("  Unsigned");
            Log.WriteLine("UInt64 cannot be negated in C#.");
            Log.WriteLine("  Signed");
            Test_Neg_Int64_LargePos_Int64();
            Test_Neg_Int64_LargeNeg_Int64();
            Test_Neg_Int64_LargestPos_Int64();
            Test_Neg_Int64_LargestNeg_Int64();
            Log.WriteLine(" ");

            #endregion

            #region 7. Not calls

            Log.WriteLine("---Not:");
            Log.WriteLine(" 32");
            Log.WriteLine("  Unsigned");
            Log.WriteLine("UInt32 cannot be not-ed into Int32, only into Int64 in C#.");
            Test_Not_UInt32_Small_Int64();
            Test_Not_UInt32_Largest_Int64();
            Log.WriteLine("  Signed");
            Test_Not_Int32_SmallPos_Int32();
            Test_Not_Int32_SmallNeg_Int32();
            Test_Not_Int32_LargePos_Int64();
            Test_Not_Int32_LargeNeg_Int64();
            Log.WriteLine(" 64");
            Log.WriteLine("  Unsigned");
            Test_Not_UInt64_Smallest_UInt64();
            Test_Not_UInt64_Largest_UInt64();
            Log.WriteLine("  Signed");
            Test_Not_Int64_LargePos_Int64();
            Test_Not_Int64_LargeNeg_Int64();
            Test_Not_Int64_LargestPos_Int64();
            Test_Not_Int64_LargestNeg_Int64();
            Log.WriteLine(" ");

            #endregion

            #region 19. Xor calls

            Log.WriteLine("---Xor:");
            Test_Xor_Int();
            Log.WriteLine(" ");

            #endregion

            #region 11. Right shift calls

            Log.WriteLine("---Right shift:");
            Log.WriteLine(" 32");
            Log.WriteLine("  Unsigned");
            Test_RShift_UInt32_Small_Int32_6();
            Test_RShift_UInt32_Largest_Int32_6();
            Log.WriteLine("  Signed");
            Test_RShift_Int32_SmallPos_Int32_6();
            Test_RShift_Int32_SmallNeg_Int32_6();
            Test_RShift_Int32_LargestPos_Int32_6();
            Test_RShift_Int32_LargestNeg_Int32_6();
            Log.WriteLine(" 64");
            Log.WriteLine("  Unsigned");
            Log.WriteLine("   dist<32");
            Test_RShift_UInt64_Large_Int32_10();
            Test_RShift_UInt64_Largest_Int32_10();
            Log.WriteLine("   dist>=32");
            Test_RShift_UInt64_Largest_Int32_63();
            Log.WriteLine("  Signed");
            Log.WriteLine("   dist<32");
            Test_RShift_Int64_LargeNeg_Int32_6();
            Log.WriteLine("   dist>=32");
            Test_RShift_Int64_LargestPos_Int32_40();
            Test_RShift_Int64_LargestNeg_Int32_40();
            Test_RShift_Int64_LargeNeg_Int32_40();
            Test_RShift_Int64_Neg1_Int32_63();
            Log.WriteLine(" ");

            #endregion

            #region 12. Left shift calls

            Log.WriteLine("---Left shift:");
            Log.WriteLine(" 32");
            Log.WriteLine("  Unsigned");
            Test_LShift_UInt32_Small_Int32_6();
            Test_LShift_UInt32_Largest_Int32_6();
            Log.WriteLine("  Signed");
            Test_LShift_Int32_SmallPos_Int32_6();
            Test_LShift_Int32_SmallNeg_Int32_6();
            Test_LShift_Int32_LargestPos_Int32_6();
            Test_LShift_Int32_LargestNeg_Int32_6();
            Log.WriteLine(" 64");
            Log.WriteLine("  Unsigned");
            Log.WriteLine("   dist<32");
            Test_LShift_UInt64_Large_Int32_2();
            Test_LShift_UInt64_Largest_Int32_10();
            Log.WriteLine("   dist>=32");
            Test_LShift_UInt64_Largest_Int32_63();
            Log.WriteLine("  Signed");
            Log.WriteLine("   dist<32");
            Test_LShift_Int64_LargeNeg_Int32_6();
            Log.WriteLine("   dist>=32");
            Test_LShift_Int64_LargestPos_Int32_40();
            Test_LShift_Int64_LargestNeg_Int32_40();
            Test_LShift_Int64_LargeNeg_Int32_40();
            Test_LShift_Int64_Neg1_Int32_63();
            Log.WriteLine(" ");



            #endregion

            #region 18. Try-Catch-Finally calls

            Log.WriteLine("---Try-Catch-Finally:");
            Log.WriteLine(" TCF 0");
            Test_TCF_0();
            Log.WriteLine(" TCF 1");
            Test_TCF_1();
            Log.WriteLine(" TCF 2");
            Test_TCF_2();
            Log.WriteLine(" TCF 3");
            Test_TCF_3();
            Log.WriteLine(" TCF 4");
            Test_TCF_4();
            Log.WriteLine(" TCF 5");
            Test_TCF_5();
            Log.WriteLine(" TCF 6");
            Test_TCF_6();
            Log.WriteLine(" TCF 7");
            Test_TCF_7();
            Log.WriteLine(" ");

            #endregion
            
            #region 10. Argument calls

            // Variables used as arguments to test methods
            {
                Int32 sign32 = 6;
                Int64 sign64 = 1441151880758558720;
                UInt32 unsign32 = 100;
                UInt64 unsign64 = 10223372036854775807;
                FlingOops.String str = "I am a string";
                FlingOops.String str2 = "I am a string too";
                Log.WriteLine("---Argument:");
                Test_Arg_Int32(sign32);
                Test_Arg_Int64(sign64);
                Test_Arg_UInt32(unsign32);
                Test_Arg_UInt64(unsign64);
                Test_Arg_String(str);
                AStruct Inst = new AStruct();
                Inst.a = 1;
                Inst.b = 2;
                Inst.c = 3;
                Inst.d = 4;
                Test_Arg_Struct(Inst);
                Test_Arg_Param(sign32, sign64, unsign32, unsign64, str, str2); 
                Log.WriteLine(" ");
            }

            #endregion
                        
            #region 14. Variables and pointers calls

            Log.WriteLine("---Variables and pointers:");
            Test_Locals_And_Pointers();
            Log.WriteLine(" ");

            #endregion

            #region 13. Struct calls

            Log.WriteLine("---Struct:");
            Test_Sizeof_Struct();
            Test_Instance_Struct();
            Log.WriteLine(" ");

            #endregion

            #region 15. Switch calls

            Log.WriteLine("---Switch:");
            Log.WriteLine(" Integers");
            Test_Switch_Int32_Case_0();
            Test_Switch_Int32_Case_1();
            Test_Switch_Int32_Case_2();
            Test_Switch_Int32_Case_Default();
            Test_Switch_Int32_Case_0_Ret_NoValue();
            Log.WriteLine("  Successfully returned from Test_Switch_Int32_Case_0_Ret_NoValue()");
            Test_Switch_Int32_Case_0_Ret_IntValue();
            Log.WriteLine("  Successfully returned from Test_Switch_Int32_Case_0_Ret_IntValue()");
            Test_Switch_Int32_Case_0_Ret_StringValue();
            Log.WriteLine("  Successfully returned from Test_Switch_Int32_Case_0_Ret_StringValue()");
            Log.WriteLine(" Strings");
            Test_Switch_String_Case_0();
            Log.WriteLine(" ");

            #endregion

            #region 16. Heap calls

            Log.WriteLine("---Heap:");
            Test_Heap();
            Log.WriteLine(" ");

            #endregion
            
            #region 17. Object calls

            Log.WriteLine("---Object:");
            Test_Objects();
            Log.WriteLine(" ");

            #endregion

            #region 20. Properties

            Log.WriteLine("---Properties:");
            Test_Properties();
            Log.WriteLine(" ");

            #endregion

            #region 21. Inheritance calls

            Log.WriteLine("---Inheritance:");
            Test_Inheritance();
            Log.WriteLine(" ");

            #endregion

            #region 8. Array calls

            Log.WriteLine("---Array:");
            Log.WriteLine(" 32");
            Log.WriteLine("  Unsigned");
            Test_Array_UInt32();
            Log.WriteLine("  Signed");
            Test_Array_Int32();
            Log.WriteLine(" 64");
            Log.WriteLine("  Unsigned");
            Test_Array_UInt64();
            Log.WriteLine("  Signed");
            Test_Array_Int64();
            Log.WriteLine(" Strings");
            Test_Array_String();
            Log.WriteLine(" Structs");
            Test_Array_Struct();
            Log.WriteLine(" Objects");
            Test_Array_Object();
            Log.WriteLine(" ");

            #endregion

            #region 9. Strings calls

            Log.WriteLine("---String:");
            Test_Strings();
            Log.WriteLine(" ");

            #endregion

            Log.WriteLine("Tests completed.");
        }
コード例 #2
0
ファイル: CompilerTests.cs プロジェクト: kztao/FlingOS
 public static void Test_Instance_Struct()
 {
     AStruct Inst = new AStruct();
     Inst.a = 1;
     Inst.b = 2;
     Inst.c = 4;
     Inst.d = 8;
     if ((Inst.a == 1) && (Inst.b == 2) && (Inst.c == 4) && (Inst.d == 8))
     {
         Log.WriteSuccess("Test_Instance_Struct okay.");
     }
     else
     {
         Log.WriteError("Test_Instance_Struct NOT okay.");
     }
 }
コード例 #3
0
ファイル: CompilerTests.cs プロジェクト: kztao/FlingOS
 public static void Test_Arg_Struct(AStruct struc)
 {
     if ((struc.a == 1) && (struc.b == 2) && (struc.c == 3) && (struc.d == 4))
     {
         Log.WriteSuccess("Test_Arg_Struct okay.");
     }
     else
     {
         Log.WriteError("Test_Arg_Struct NOT okay.");
     }
 }
コード例 #4
0
ファイル: CompilerTests.cs プロジェクト: kztao/FlingOS
        /// <summary>
        /// Tests: Array declaration using structs as elements, 
        /// Input: An array with four elements, 
        /// Result: Correct values for each element.
        /// </summary>
        /// <remarks>
        /// <para>
        /// FlingOS does allow array declaration of the form: 
        /// int[] array = new int[4] {5, 10, 15, 20} or 
        /// int[] array = new int[] {5, 10, 15, 20}. 
        /// Array elements must be explicitly declared as in this test case. 
        /// To declare an array of strings, we need to use the FlingOS built-in string type, NOT just string because that is part of .NET.
        /// </para>
        /// </remarks>
        public static unsafe void Test_Array_Struct()
        {
            AStruct[] array = new AStruct[3];
            array[0].a = 1;
            array[0].b = 2;
            array[0].c = 4;
            array[0].d = 8;
            array[1].a = 10;
            array[1].b = 20;
            array[1].c = 40;
            array[1].d = 80;
            array[2].a = 100;
            array[2].b = 200;
            array[2].c = 400;
            array[2].d = 800;
            Int32 a = array.Length;
            if (a == 3)
            {
                Log.WriteSuccess("Test_Array_Length_Struct okay.");
            }
            else
            {
                Log.WriteError("Test_Array_Length_Struct NOT okay.");
            }
            if (array[0].a == 1)
            {
                Log.WriteSuccess("Test_Array_Decl_Struct[0].a okay.");
            }
            else
            {
                Log.WriteError("Test_Array_Decl_Struct[0].a Not okay.");
            }

            if (array[0].b == 2)
            {
                Log.WriteSuccess("Test_Array_Decl_Struct[0].b okay.");
            }
            else
            {
                Log.WriteError("Test_Array_Decl_Struct[0].b Not okay");
            }

            if (array[0].c == 4)
            {
                Log.WriteSuccess("Test_Array_Decl_Struct[0].c okay.");
            }
            else
            {
                Log.WriteError("Test_Array_Decl_Struct[0].c Not okay");
            }

            if (array[0].d == 8)
            {
                Log.WriteSuccess("Test_Array_Decl_Struct[0].d okay.");
            }
            else
            {
                Log.WriteError("Test_Array_Decl_Struct[0].d Not okay");
            }
            if (array[1].a == 10)
            {
                Log.WriteSuccess("Test_Array_Decl_Struct[1].a okay.");
            }
            else
            {
                Log.WriteError("Test_Array_Decl_Struct[1].a Not okay.");
            }

            if (array[1].b == 20)
            {
                Log.WriteSuccess("Test_Array_Decl_Struct[1].b okay.");
            }
            else
            {
                Log.WriteError("Test_Array_Decl_Struct[1].b Not okay");
            }

            if (array[1].c == 40)
            {
                Log.WriteSuccess("Test_Array_Decl_Struct[1].c okay.");
            }
            else
            {
                Log.WriteError("Test_Array_Decl_Struct[1].c Not okay");
            }

            if (array[1].d == 80)
            {
                Log.WriteSuccess("Test_Array_Decl_Struct[1].d okay.");
            }
            else
            {
                Log.WriteError("Test_Array_Decl_Struct[1].d Not okay");
            }
            if (array[2].a == 100)
            {
                Log.WriteSuccess("Test_Array_Decl_Struct[2].a okay.");
            }
            else
            {
                Log.WriteError("Test_Array_Decl_Struct[2].a Not okay.");
            }

            if (array[2].b == 200)
            {
                Log.WriteSuccess("Test_Array_Decl_Struct[2].b okay.");
            }
            else
            {
                Log.WriteError("Test_Array_Decl_Struct[2].b Not okay");
            }

            if (array[2].c == 400)
            {
                Log.WriteSuccess("Test_Array_Decl_Struct[2].c okay.");
            }
            else
            {
                Log.WriteError("Test_Array_Decl_Struct[2].c Not okay");
            }

            if (array[2].d == 800)
            {
                Log.WriteSuccess("Test_Array_Decl_Struct[2].d okay.");
            }
            else
            {
                Log.WriteError("Test_Array_Decl_Struct[2].d Not okay");
            }
        }
コード例 #5
0
ファイル: CompilerTests.cs プロジェクト: rmhasan/FlingOS
 public static unsafe void Test_Static_Struct()
 {
     staticStruct = new AStruct();
     staticStruct.a = 5;
     if (staticStruct.a == 5)
     {
         Log.WriteSuccess("Test_Static_Struct staticStruct.a is 5.");
     }
     else
     {
         Log.WriteError("Test_Static_Struct staticStruct.a is not 5.");
     }
     AStruct b = staticStruct;
     if (b.a == 5)
     {
         Log.WriteSuccess("Test_Static_Struct b.a is 5.");
     }
     else
     {
         Log.WriteError("Test_Static_Struct b.a is not 5.");
     }
     b.b = 10;
     if (b.b == 10)
     {
         Log.WriteSuccess("Test_Static_Struct b.b is 10.");
     }
     else
     {
         Log.WriteError("Test_Static_Struct b.b is not 10.");
     }
     staticStruct = b;
     if (staticStruct.a == 5)
     {
         Log.WriteSuccess("Test_Static_Struct staticStruct.a is 5 (2).");
     }
     else
     {
         Log.WriteError("Test_Static_Struct staticStruct.a is not 5 (2).");
     }
     if (staticStruct.b == 10)
     {
         Log.WriteSuccess("Test_Static_Struct staticStruct.b is 10.");
     }
     else
     {
         Log.WriteError("Test_Static_Struct staticStruct.b is not 10.");
     }
 }
コード例 #6
0
ファイル: CompilerTests.cs プロジェクト: rmhasan/FlingOS
 public static void Test_Arg_Store(AStruct struc)
 {
     AStruct x = new AStruct();
     x.a = 255;
     x.b = 254;
     x.c = 253;
     x.d = 252;
     struc = x;
     if (struc.a == 255 && struc.b == 254 && struc.c == 253 && struc.d == 252)
     {
         Log.WriteSuccess("Test_Arg_Store okay.");
     }
     else
     {
         Log.WriteError("Test_Arg_Store NOT okay.");
     }
 }