Beispiel #1
0
 public static string TestInit(testDefConstr.A sample)
 {
     if (sample.id != 0)
     {
         return("Expected: id == 0; Received: " + sample.id);
     }
     if (sample.Name == null)
     {
         return("name == null");
     }
     if (!sample.Name.Equals(string.Empty))
     {
         return("Expected: name == \"\"; Received: \"" + sample.Name + "\"");
     }
     if (sample.embedded == null)
     {
         return("embedded == null");
     }
     if (sample.embedded.x != 0)
     {
         return("Expected: embedded.x == 0; Received: " + sample.embedded.x);
     }
     if (sample.embedded.y != 0)
     {
         return("Expected: embedded.y == 0; Received: " + sample.embedded.y);
     }
     if (sample.embedded.z != 0)
     {
         return("Expected: embedded.z == 0; Received: " + sample.embedded.z);
     }
     if (sample.c != testDefConstr.Color.Red)
     {
         return("Expected: c == 0; Received: " + sample.c.Value());
     }
     if (sample.nums == null)
     {
         return("nums == null");
     }
     if (sample.nums.Length != testDefConstr.DIM_NUMS_1.Value)
     {
         return("Expected nums.length == " + testDefConstr.DIM_NUMS_1.Value + "; Received: "
                + sample.nums.Length);
     }
     for (int i = 0; i < testDefConstr.DIM_NUMS_1.Value; i++)
     {
         if (sample.nums[i].Length != testDefConstr.DIM_NUMS_2.Value)
         {
             return("Expected nums[" + i + "].length == " + testDefConstr.DIM_NUMS_2.Value + "; Received: "
                    + sample.nums[i].Length);
         }
         for (int j = 0; j < testDefConstr.DIM_NUMS_2.Value; j++)
         {
             if (sample.nums[i][j] != 0)
             {
                 return("Expected sample.nums[" + i + "][" + j + "] == 0" + "; Received: " + sample
                        .nums[i][j]);
             }
         }
     }
     if (sample.nums2 == null)
     {
         return("sample.nums2 == null");
     }
     if (sample.nums2.Length != 0)
     {
         return("Expected nums2.length == 0; Received: " + sample.nums2.Length);
     }
     if (sample.floatList == null)
     {
         return("floatList == null");
     }
     if (sample.floatList.Length != 0)
     {
         return("Expected floatList.length == 0; Received: " + sample.floatList.Length);
     }
     if (sample.la2Dim == null)
     {
         return("la2Dim == null");
     }
     if (sample.la2Dim.Length != testDefConstr.DIM_LA2DIM_1.Value)
     {
         return("Expected la2Dim.length == " + testDefConstr.DIM_LA2DIM_1.Value + "; Received: "
                + sample.la2Dim.Length);
     }
     for (int i = 0; i < testDefConstr.DIM_LA2DIM_1.Value; i++)
     {
         if (sample.la2Dim[i].Length != testDefConstr.DIM_LONGARRAY10_1.Value)
         {
             return("Expected la2Dim[" + i + "].length == " + testDefConstr.DIM_LONGARRAY10_1.
                    Value + "; Received: " + sample.la2Dim[i].Length);
         }
         for (int j = 0; j < testDefConstr.DIM_LONGARRAY10_1.Value; j++)
         {
             if (sample.la2Dim[i][j] != 0)
             {
                 return("Expected la2Dim[" + i + "][" + j + "] == 0" + "; Received: " + sample.la2Dim
                        [i][j]);
             }
         }
     }
     return(null);
 }
Beispiel #2
0
        public override Test.Framework.TestResult Run()
        {
            Test.Framework.TestResult result;
            int status;

            Test.Framework.TestVerdict expVerdict = Test.Framework.TestVerdict.Pass;
            string expResult = "uninitialized struct A can be written/received without errors.";

            DDS.IDomainParticipant     participant;
            testDefConstr.ATypeSupport aTS;
            string aTypeName;

            DDS.ITopic                aTopic;
            DDS.IPublisher            pub;
            DDS.ISubscriber           sub;
            DDS.IDataWriter           dw;
            testDefConstr.ADataWriter aDW;
            DDS.IDataReader           dr;
            testDefConstr.ADataReader aDR;
            long   handle;
            string resultMsg;

            // Create Participant.
            participant = DDS.TheParticipantFactory.Value.CreateParticipant(DDS.DomainId.Default, DDS.PARTICIPANT_QOS_DEFAULT
                                                                            .Value, null, 0);
            if (participant == null)
            {
                result = new Test.Framework.TestResult(expResult, "Creation of DomainParticipant failed."
                                                       , expVerdict, Test.Framework.TestVerdict.Fail);
                return(result);
            }
            // Register TypeSupport.
            aTS       = new testDefConstr.ATypeSupport();
            aTypeName = aTS.TypeName;
            status    = aTS.RegisterType(participant, aTypeName);
            if (status != DDS.ReturnCode.Ok)
            {
                result = new Test.Framework.TestResult(expResult, "Registering of A TypeSupport failed."
                                                       , expVerdict, Test.Framework.TestVerdict.Fail);
                return(result);
            }
            // Create Topic.
            aTopic = participant.CreateTopic("structA", aTypeName, DDS.TOPIC_QOS_DEFAULT.Value
                                             , null, 0);
            if (aTopic == null)
            {
                result = new Test.Framework.TestResult(expResult, "Creation of A Topic failed.",
                                                       expVerdict, Test.Framework.TestVerdict.Fail);
                return(result);
            }
            // Create Publisher.
            pub = participant.CreatePublisher(DDS.PUBLISHER_QOS_DEFAULT.Value, null, 0);
            if (pub == null)
            {
                result = new Test.Framework.TestResult(expResult, "Creation of Publisher failed."
                                                       , expVerdict, Test.Framework.TestVerdict.Fail);
                return(result);
            }
            // Create ADataWriter.
            dw = pub.CreateDataWriter(aTopic, DDS.DATAWRITER_QOS_USE_TOPIC_QOS.Value, null,
                                      0);
            aDW = testDefConstr.ADataWriterHelper.Narrow(dw);
            if (aDW == null)
            {
                result = new Test.Framework.TestResult(expResult, "Creation of ADataWriter failed."
                                                       , expVerdict, Test.Framework.TestVerdict.Fail);
                return(result);
            }
            // Create Subscriber.
            sub = participant.CreateSubscriber(DDS.SUBSCRIBER_QOS_DEFAULT.Value, null, 0);
            if (pub == null)
            {
                result = new Test.Framework.TestResult(expResult, "Creation of Subscriber failed."
                                                       , expVerdict, Test.Framework.TestVerdict.Fail);
                return(result);
            }
            // Create ADataReader.
            dr = sub.CreateDataReader(aTopic, DDS.DATAREADER_QOS_USE_TOPIC_QOS.Value, null,
                                      0);
            aDR = testDefConstr.ADataReaderHelper.Narrow(dr);
            if (aDR == null)
            {
                result = new Test.Framework.TestResult(expResult, "Creation of ADataReader failed."
                                                       , expVerdict, Test.Framework.TestVerdict.Fail);
                return(result);
            }
            // Instantiate a sample of A and test if it is initialized properly.
            testDefConstr.A myA = new testDefConstr.A();
            resultMsg = TestInit(myA);
            if (resultMsg != null)
            {
                result = new Test.Framework.TestResult(expResult, "Default initialization of A not successful: "
                                                       + resultMsg, expVerdict, Test.Framework.TestVerdict.Fail);
                return(result);
            }
            // Register the sample and write it into the system.
            handle = aDW.Register_instance(myA);
            if (handle == 0)
            {
                result = new Test.Framework.TestResult(expResult, "Registering an instance of type A failed."
                                                       , expVerdict, Test.Framework.TestVerdict.Fail);
                return(result);
            }
            status = aDW.Write(myA, handle);
            if (status != DDS.ReturnCode.Ok)
            {
                result = new Test.Framework.TestResult(expResult, "Writing an instance of type A failed."
                                                       , expVerdict, Test.Framework.TestVerdict.Fail);
                return(result);
            }
            // Read the sample and check whether everything is initialized properly.
            testDefConstr.ASeqHolder msgSeq  = new testDefConstr.ASeqHolder();
            DDS.SampleInfo[]         infoSeq = new DDS.SampleInfo[] ();
            status = aDR.Take(msgSeq, infoSeq, DDS.Length.Unlimited, DDS.NOT_READ_SAMPLE_STATE
                              .Value, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Alive);
            if (msgSeq.Value.Length != 1)
            {
                result = new Test.Framework.TestResult(expResult, "Wrong number of samples received."
                                                       , expVerdict, Test.Framework.TestVerdict.Fail);
                return(result);
            }
            resultMsg = TestInit(msgSeq.Value[0]);
            if (resultMsg != null)
            {
                result = new Test.Framework.TestResult(expResult, "Received A Sample has a different state from its orginial: "
                                                       + resultMsg, expVerdict, Test.Framework.TestVerdict.Fail);
                return(result);
            }
            // Delete all entities.
            status = participant.DeleteContainedEntities();
            if (status != DDS.ReturnCode.Ok)
            {
                result = new Test.Framework.TestResult(expResult, "Deleting contained entities failed."
                                                       , expVerdict, Test.Framework.TestVerdict.Fail);
                return(result);
            }
            status = DDS.TheParticipantFactory.Value.DeleteParticipant(participant);
            if (status != DDS.ReturnCode.Ok)
            {
                result = new Test.Framework.TestResult(expResult, "Deleting participant failed.",
                                                       expVerdict, Test.Framework.TestVerdict.Fail);
                return(result);
            }
            result = new Test.Framework.TestResult(expResult, expResult, expVerdict, expVerdict
                                                   );
            return(result);
        }
Beispiel #3
0
        public override Test.Framework.TestResult Run()
        {
            Test.Framework.TestResult  result;
            DDS.ReturnCode             status;
            Test.Framework.TestVerdict expVerdict = Test.Framework.TestVerdict.Pass;
            string expResult = "Both uninitialized and initialized struct A can be written/received without errors.";

            DDS.IDomainParticipant     participant;
            testDefConstr.ATypeSupport aTS;
            string aTypeName;

            DDS.ITopic                aTopic;
            DDS.IPublisher            pub;
            DDS.ISubscriber           sub;
            testDefConstr.ADataWriter aDW;
            testDefConstr.ADataReader aDR;
            long   handle;
            string resultMsg;

            // Create Participant.
            participant = DDS.DomainParticipantFactory.Instance.CreateParticipant(DDS.DomainId.Default);
            if (participant == null)
            {
                result = new Test.Framework.TestResult(expResult, "Creation of DomainParticipant failed."
                                                       , expVerdict, Test.Framework.TestVerdict.Fail);
                return(result);
            }
            // Register TypeSupport.
            aTS       = new testDefConstr.ATypeSupport();
            aTypeName = aTS.TypeName;
            status    = aTS.RegisterType(participant, aTypeName);
            if (status != DDS.ReturnCode.Ok)
            {
                result = new Test.Framework.TestResult(expResult, "Registering of A TypeSupport failed."
                                                       , expVerdict, Test.Framework.TestVerdict.Fail);
                return(result);
            }
            // Create Topic.
            aTopic = participant.CreateTopic("structA", aTypeName);
            if (aTopic == null)
            {
                result = new Test.Framework.TestResult(expResult, "Creation of A Topic failed.",
                                                       expVerdict, Test.Framework.TestVerdict.Fail);
                return(result);
            }
            // Create Publisher.
            pub = participant.CreatePublisher();
            if (pub == null)
            {
                result = new Test.Framework.TestResult(expResult, "Creation of Publisher failed."
                                                       , expVerdict, Test.Framework.TestVerdict.Fail);
                return(result);
            }
            // Create ADataWriter.
            aDW = pub.CreateDataWriter(aTopic) as testDefConstr.ADataWriter;;
            if (aDW == null)
            {
                result = new Test.Framework.TestResult(expResult, "Creation of ADataWriter failed."
                                                       , expVerdict, Test.Framework.TestVerdict.Fail);
                return(result);
            }
            // Create Subscriber.
            sub = participant.CreateSubscriber();
            if (pub == null)
            {
                result = new Test.Framework.TestResult(expResult, "Creation of Subscriber failed."
                                                       , expVerdict, Test.Framework.TestVerdict.Fail);
                return(result);
            }
            // Create ADataReader.
            aDR = sub.CreateDataReader(aTopic) as testDefConstr.ADataReader;
            if (aDR == null)
            {
                result = new Test.Framework.TestResult(expResult, "Creation of ADataReader failed."
                                                       , expVerdict, Test.Framework.TestVerdict.Fail);
                return(result);
            }
            // Instantiate a sample of A and test if it is initialized properly.
            testDefConstr.A myA = new testDefConstr.A();
            resultMsg = TestInit(myA);
            if (resultMsg != null)
            {
                result = new Test.Framework.TestResult(expResult, "Default initialization of A not successful: "
                                                       + resultMsg, expVerdict, Test.Framework.TestVerdict.Fail);
                return(result);
            }
            // Register the sample and write it into the system.
            handle = aDW.RegisterInstance(myA);
            if (handle == 0)
            {
                result = new Test.Framework.TestResult(expResult, "Registering an instance of type A failed."
                                                       , expVerdict, Test.Framework.TestVerdict.Fail);
                return(result);
            }
            status = aDW.Write(myA, handle);
            if (status != DDS.ReturnCode.Ok)
            {
                result = new Test.Framework.TestResult(expResult, "Writing an instance of type A failed."
                                                       , expVerdict, Test.Framework.TestVerdict.Fail);
                return(result);
            }
            // Read the sample and check whether everything is initialized properly.
            testDefConstr.A[] msgSeq  = null;
            DDS.SampleInfo[]  infoSeq = null;
            status = aDR.Take(ref msgSeq, ref infoSeq, DDS.Length.Unlimited, DDS.SampleStateKind.NotRead,
                              DDS.ViewStateKind.Any, DDS.InstanceStateKind.Alive);
            if (msgSeq.Length != 1)
            {
                result = new Test.Framework.TestResult(expResult, "Wrong number of samples received."
                                                       , expVerdict, Test.Framework.TestVerdict.Fail);
                return(result);
            }
            resultMsg = TestInit(msgSeq[0]);
            if (resultMsg != null)
            {
                result = new Test.Framework.TestResult(expResult, "Received A Sample has a different state from its orginial: "
                                                       + resultMsg, expVerdict, Test.Framework.TestVerdict.Fail);
                return(result);
            }

            //Now explicitly initlaize sample to some preset values.
            myA.id         = 5;
            myA.name       = "Mary";
            myA.embedded.x = 1;
            myA.embedded.y = 2;
            myA.embedded.z = 3;
            myA.c          = testDefConstr.Color.Blue;
            for (int i = 0; i < testDefConstr.DIM_NUMS_1.value; i++)
            {
                for (int j = 0; j < testDefConstr.DIM_NUMS_2.value; j++)
                {
                    myA.nums[i, j] = 10 + i + j;
                }
            }
            myA.nums2       = new int[2][];
            myA.nums2[0]    = new int[1];
            myA.nums2[1]    = new int[1];
            myA.nums2[0][0] = 8;
            myA.nums2[1][0] = 9;

            myA.floatList       = new float[1][];
            myA.floatList[0]    = new float[2];
            myA.floatList[0][0] = 0.1f;
            myA.floatList[0][1] = 0.2f;

            myA.stringList = new string[3] {
                "Erik", "Maurtis", "Hans"
            };

            for (int i = 0; i < testDefConstr.DIM_LA2DIM_1.value; i++)
            {
                for (int j = 0; j < testDefConstr.DIM_LONGARRAY10_1.value; j++)
                {
                    myA.la2Dim[i, j] = testDefConstr.DIM_LA2DIM_1.value * i + j;
                }
            }

            // Register the sample and write it into the system.
            handle = aDW.RegisterInstance(myA);
            if (handle == 0)
            {
                result = new Test.Framework.TestResult(expResult, "Registering an initialized instance of type A failed."
                                                       , expVerdict, Test.Framework.TestVerdict.Fail);
                return(result);
            }
            status = aDW.Write(myA, handle);
            if (status != DDS.ReturnCode.Ok)
            {
                result = new Test.Framework.TestResult(expResult, "Writing an initialized instance of type A failed."
                                                       , expVerdict, Test.Framework.TestVerdict.Fail);
                return(result);
            }
            // Read the sample and check whether everything is initialized properly.
            status = aDR.Take(ref msgSeq, ref infoSeq, DDS.Length.Unlimited, DDS.SampleStateKind.NotRead,
                              DDS.ViewStateKind.Any, DDS.InstanceStateKind.Alive);
            if (msgSeq.Length != 1)
            {
                result = new Test.Framework.TestResult(expResult, "Wrong number of samples received."
                                                       , expVerdict, Test.Framework.TestVerdict.Fail);
                return(result);
            }
            resultMsg = compareSamples(myA, msgSeq[0]);
            if (resultMsg != null)
            {
                result = new Test.Framework.TestResult(expResult, "Received A Sample has a different state from its orginial: "
                                                       + resultMsg, expVerdict, Test.Framework.TestVerdict.Fail);
                return(result);
            }

            // Delete all entities.
            status = participant.DeleteContainedEntities();
            if (status != DDS.ReturnCode.Ok)
            {
                result = new Test.Framework.TestResult(expResult, "Deleting contained entities failed."
                                                       , expVerdict, Test.Framework.TestVerdict.Fail);
                return(result);
            }
            status = DDS.DomainParticipantFactory.Instance.DeleteParticipant(participant);
            if (status != DDS.ReturnCode.Ok)
            {
                result = new Test.Framework.TestResult(expResult, "Deleting participant failed.",
                                                       expVerdict, Test.Framework.TestVerdict.Fail);
                return(result);
            }
            result = new Test.Framework.TestResult(expResult, expResult, expVerdict, expVerdict
                                                   );
            return(result);
        }
Beispiel #4
0
 public override Test.Framework.TestResult Run()
 {
     Test.Framework.TestResult result;
     int status;
     Test.Framework.TestVerdict expVerdict = Test.Framework.TestVerdict.Pass;
     string expResult = "uninitialized struct A can be written/received without errors.";
     DDS.IDomainParticipant participant;
     testDefConstr.ATypeSupport aTS;
     string aTypeName;
     DDS.ITopic aTopic;
     DDS.IPublisher pub;
     DDS.ISubscriber sub;
     DDS.IDataWriter dw;
     testDefConstr.ADataWriter aDW;
     DDS.IDataReader dr;
     testDefConstr.ADataReader aDR;
     long handle;
     string resultMsg;
     // Create Participant.
     participant = DDS.TheParticipantFactory.Value.CreateParticipant(null, DDS.PARTICIPANT_QOS_DEFAULT
         .Value, null, 0);
     if (participant == null)
     {
         result = new Test.Framework.TestResult(expResult, "Creation of DomainParticipant failed."
             , expVerdict, Test.Framework.TestVerdict.Fail);
         return result;
     }
     // Register TypeSupport.
     aTS = new testDefConstr.ATypeSupport();
     aTypeName = aTS.TypeName;
     status = aTS.RegisterType(participant, aTypeName);
     if (status != DDS.ReturnCode.Ok)
     {
         result = new Test.Framework.TestResult(expResult, "Registering of A TypeSupport failed."
             , expVerdict, Test.Framework.TestVerdict.Fail);
         return result;
     }
     // Create Topic.
     aTopic = participant.CreateTopic("structA", aTypeName, DDS.TOPIC_QOS_DEFAULT.Value
         , null, 0);
     if (aTopic == null)
     {
         result = new Test.Framework.TestResult(expResult, "Creation of A Topic failed.",
             expVerdict, Test.Framework.TestVerdict.Fail);
         return result;
     }
     // Create Publisher.
     pub = participant.CreatePublisher(DDS.PUBLISHER_QOS_DEFAULT.Value, null, 0);
     if (pub == null)
     {
         result = new Test.Framework.TestResult(expResult, "Creation of Publisher failed."
             , expVerdict, Test.Framework.TestVerdict.Fail);
         return result;
     }
     // Create ADataWriter.
     dw = pub.CreateDataWriter(aTopic, DDS.DATAWRITER_QOS_USE_TOPIC_QOS.Value, null,
         0);
     aDW = testDefConstr.ADataWriterHelper.Narrow(dw);
     if (aDW == null)
     {
         result = new Test.Framework.TestResult(expResult, "Creation of ADataWriter failed."
             , expVerdict, Test.Framework.TestVerdict.Fail);
         return result;
     }
     // Create Subscriber.
     sub = participant.CreateSubscriber(DDS.SUBSCRIBER_QOS_DEFAULT.Value, null, 0);
     if (pub == null)
     {
         result = new Test.Framework.TestResult(expResult, "Creation of Subscriber failed."
             , expVerdict, Test.Framework.TestVerdict.Fail);
         return result;
     }
     // Create ADataReader.
     dr = sub.CreateDataReader(aTopic, DDS.DATAREADER_QOS_USE_TOPIC_QOS.Value, null,
         0);
     aDR = testDefConstr.ADataReaderHelper.Narrow(dr);
     if (aDR == null)
     {
         result = new Test.Framework.TestResult(expResult, "Creation of ADataReader failed."
             , expVerdict, Test.Framework.TestVerdict.Fail);
         return result;
     }
     // Instantiate a sample of A and test if it is initialized properly.
     testDefConstr.A myA = new testDefConstr.A();
     resultMsg = TestInit(myA);
     if (resultMsg != null)
     {
         result = new Test.Framework.TestResult(expResult, "Default initialization of A not successful: "
              + resultMsg, expVerdict, Test.Framework.TestVerdict.Fail);
         return result;
     }
     // Register the sample and write it into the system.
     handle = aDW.Register_instance(myA);
     if (handle == 0)
     {
         result = new Test.Framework.TestResult(expResult, "Registering an instance of type A failed."
             , expVerdict, Test.Framework.TestVerdict.Fail);
         return result;
     }
     status = aDW.Write(myA, handle);
     if (status != DDS.ReturnCode.Ok)
     {
         result = new Test.Framework.TestResult(expResult, "Writing an instance of type A failed."
             , expVerdict, Test.Framework.TestVerdict.Fail);
         return result;
     }
     // Read the sample and check whether everything is initialized properly.
     testDefConstr.ASeqHolder msgSeq = new testDefConstr.ASeqHolder();
     DDS.SampleInfo[] infoSeq = new DDS.SampleInfo[]();
     status = aDR.Take(msgSeq, infoSeq, DDS.Length.Unlimited, DDS.NOT_READ_SAMPLE_STATE
         .Value, DDS.ViewStateKind.Any, DDS.InstanceStateKind.Alive);
     if (msgSeq.Value.Length != 1)
     {
         result = new Test.Framework.TestResult(expResult, "Wrong number of samples received."
             , expVerdict, Test.Framework.TestVerdict.Fail);
         return result;
     }
     resultMsg = TestInit(msgSeq.Value[0]);
     if (resultMsg != null)
     {
         result = new Test.Framework.TestResult(expResult, "Received A Sample has a different state from its orginial: "
              + resultMsg, expVerdict, Test.Framework.TestVerdict.Fail);
         return result;
     }
     // Delete all entities.
     status = participant.DeleteContainedEntities();
     if (status != DDS.ReturnCode.Ok)
     {
         result = new Test.Framework.TestResult(expResult, "Deleting contained entities failed."
             , expVerdict, Test.Framework.TestVerdict.Fail);
         return result;
     }
     status = DDS.TheParticipantFactory.Value.DeleteParticipant(participant);
     if (status != DDS.ReturnCode.Ok)
     {
         result = new Test.Framework.TestResult(expResult, "Deleting participant failed.",
             expVerdict, Test.Framework.TestVerdict.Fail);
         return result;
     }
     result = new Test.Framework.TestResult(expResult, expResult, expVerdict, expVerdict
         );
     return result;
 }
Beispiel #5
0
 public static string compareSamples(testDefConstr.A sample1, testDefConstr.A sample2)
 {
     if (sample1.id != sample2.id)
     {
         return("Expected: id == " + sample1.id + "; Received: " + sample2.id);
     }
     if ((sample1.name != null && sample2.name != null && !sample1.name.Equals(sample2.name)) || (sample1.name != sample2.name && (sample1.name == null || sample2.name == null)))
     {
         return("Expected: name == " + sample1.name + "; Received: \"" + sample2.name + "\"");
     }
     if (sample1.embedded == null || sample2.embedded == null)
     {
         return("embedded == null");
     }
     if (sample1.embedded.x != sample2.embedded.x)
     {
         return("Expected: embedded.x == " + sample1.embedded.x + "; Received: " + sample2.embedded.x);
     }
     if (sample1.embedded.y != sample2.embedded.y)
     {
         return("Expected: embedded.y == " + sample1.embedded.y + "; Received: " + sample2.embedded.y);
     }
     if (sample1.embedded.z != sample2.embedded.z)
     {
         return("Expected: embedded.z == " + sample1.embedded.z + "; Received: " + sample2.embedded.z);
     }
     if (sample1.c != sample2.c)
     {
         return("Expected: c == " + sample1.c + "; Received: " + sample2.c);
     }
     if (sample1.nums == null || sample2.nums == null)
     {
         return("nums == null");
     }
     if (sample1.nums.GetLength(0) != sample2.nums.GetLength(0))
     {
         return("Expected nums.length (1st dimension) == " + sample1.nums.GetLength(0) + "; Received: "
                + sample2.nums.GetLength(0));
     }
     if (sample1.nums.GetLength(1) != sample2.nums.GetLength(1))
     {
         return("Expected nums.length (2nd dimension) == " + sample1.nums.GetLength(1) + "; Received: "
                + sample2.nums.GetLength(1));
     }
     for (int i = 0; i < sample1.nums.GetLength(0); i++)
     {
         for (int j = 0; j < sample1.nums.GetLength(1); j++)
         {
             if (sample1.nums[i, j] != sample2.nums[i, j])
             {
                 return("Expected sample1.nums[" + i + ", " + j + "] == " + sample1.nums[i, j] + "; Received: " + sample2.nums[i, j]);
             }
         }
     }
     if (sample1.nums2 == null || sample2.nums2 == null)
     {
         return("sample.nums2 == null");
     }
     if (sample1.nums2.Length != sample2.nums2.Length)
     {
         return("Expected nums2.length == " + sample1.nums2.Length + "; Received: " + sample2.nums2.Length);
     }
     for (int i = 0; i < sample1.nums2.Length; i++)
     {
         if (sample1.nums2[i] == null || sample2.nums2[i] == null)
         {
             return("sample.nums2[ " + i + "] == null");
         }
         if (sample1.nums2[i].Length != sample2.nums2[i].Length)
         {
             return("Expected nums2.length == " + sample1.nums2[i].Length + "; Received: " + sample2.nums2[i].Length);
         }
         for (int j = 0; j < sample1.nums2[i].Length; j++)
         {
             if (sample1.nums2[i][j] != sample2.nums2[i][j])
             {
                 return("Expected nums2[" + i + "][" + j + "] == " + sample1.nums2[i][j] + "; Received: " + sample2.nums2[i][j]);
             }
         }
     }
     if (sample1.floatList == null || sample2.floatList == null)
     {
         return("floatList == null");
     }
     if (sample1.floatList.Length != sample2.floatList.Length)
     {
         return("Expected floatList.length == " + sample1.floatList.Length + "; Received: " + sample2.floatList.Length);
     }
     for (int i = 0; i < sample1.floatList.Length; i++)
     {
         if (sample1.floatList[i] == null || sample2.floatList[i] == null)
         {
             return("sample.floatList[ " + i + "] == null");
         }
         if (sample1.floatList[i].Length != sample2.floatList[i].Length)
         {
             return("Expected floatList.length == " + sample1.floatList[i].Length + "; Received: " + sample2.floatList[i].Length);
         }
         for (int j = 0; j < sample1.floatList[i].Length; j++)
         {
             if (sample1.floatList[i][j] != sample2.floatList[i][j])
             {
                 return("Expected floatList[" + i + "][" + j + "] == " + sample1.floatList[i][j] + "; Received: " + sample2.floatList[i][j]);
             }
         }
     }
     if (sample1.stringList == null || sample2.stringList == null)
     {
         return("stringList == null");
     }
     if (sample1.stringList.Length != sample2.stringList.Length)
     {
         return("Expected stringList.length == " + sample1.stringList.Length + "; Received: " + sample2.stringList.Length);
     }
     for (int i = 0; i < sample1.stringList.Length; i++)
     {
         if (sample1.stringList[i] == null || sample2.stringList[i] == null)
         {
             return("sample.stringList[ " + i + "] == null");
         }
         if (sample1.stringList[i].Length != sample2.stringList[i].Length)
         {
             return("Expected stringList.length == " + sample1.stringList[i].Length + "; Received: " + sample2.stringList[i].Length);
         }
         for (int j = 0; j < sample1.stringList[i].Length; j++)
         {
             if (sample1.stringList[i][j] != sample2.stringList[i][j])
             {
                 return("Expected stringList[" + i + "][" + j + "] == " + sample1.stringList[i][j] + "; Received: " + sample2.stringList[i][j]);
             }
         }
     }
     if (sample1.la2Dim == null || sample2.la2Dim == null)
     {
         return("la2Dim == null");
     }
     if (sample1.la2Dim.GetLength(0) != sample2.la2Dim.GetLength(0))
     {
         return("Expected la2Dim.length (1st dimension) == " + sample1.la2Dim.GetLength(0) + "; Received: "
                + sample2.la2Dim.GetLength(0));
     }
     if (sample1.la2Dim.GetLength(1) != sample2.la2Dim.GetLength(1))
     {
         return("Expected la2Dim.length (2nd dimension) == " + sample1.la2Dim.GetLength(1)
                + "; Received: " + sample2.la2Dim.GetLength(1));
     }
     for (int i = 0; i < sample1.la2Dim.GetLength(0); i++)
     {
         for (int j = 0; j < sample1.la2Dim.GetLength(1); j++)
         {
             if (sample1.la2Dim[i, j] != sample2.la2Dim[i, j])
             {
                 return("Expected la2Dim[" + i + ", " + j + "] == " + sample1.la2Dim[i, j] + "; Received: " + sample2.la2Dim[i, j]);
             }
         }
     }
     return(null);
 }