public void interactionsFillIn()
        {
            LETSIRTE_Service client = getClient();

            string intFillInID = "FillIn";

            cocdType        cocd  = client.Get();
            interactionType inter = cocd.GetInteraction(intFillInID, true);

            inter.type             = interactionTypeType.fill_in;
            inter.correctResponses = new correctResponsesType();
            inter.correctResponses.ItemsElementName = new ItemsChoiceType[] { ItemsChoiceType.correctResponseFillIn, ItemsChoiceType.correctResponseFillIn };
            correctResponsesTypeCorrectResponseFillIn rsp  = new correctResponsesTypeCorrectResponseFillIn();
            correctResponsesTypeCorrectResponseFillIn rsp2 = new correctResponsesTypeCorrectResponseFillIn();

            inter.correctResponses.Items = new object[] { rsp, rsp2 };

            rsp.matchText     = new correctResponsesTypeCorrectResponseFillInMatchText[2];
            rsp2.matchText    = new correctResponsesTypeCorrectResponseFillInMatchText[1];
            rsp.matchText[0]  = new correctResponsesTypeCorrectResponseFillInMatchText();
            rsp.matchText[1]  = new correctResponsesTypeCorrectResponseFillInMatchText();
            rsp2.matchText[0] = new correctResponsesTypeCorrectResponseFillInMatchText();

            rsp.matchText[0].Value  = "answer 1";
            rsp.matchText[1].Value  = "answer 1.1";
            rsp2.matchText[0].Value = "answer 2";

            inter.description       = new interactionTypeDescription();
            inter.description.Value = "fillin interaction";
            inter.learnerResponse   = new learnerResponseType();
            inter.learnerResponse.ItemsElementName = new ItemsChoiceType1[] { ItemsChoiceType1.learnerResponseFillIn, ItemsChoiceType1.learnerResponseFillIn };
            learnerResponseTypeLearnerResponseFillIn lrsp  = new learnerResponseTypeLearnerResponseFillIn();
            learnerResponseTypeLearnerResponseFillIn lrsp2 = new learnerResponseTypeLearnerResponseFillIn();

            inter.learnerResponse.Items = new object[] { lrsp, lrsp2 };

            lrsp.Value  = "answer 1";
            lrsp2.Value = "answer 1.1";

            inter.result          = interactionTypeResult.correct;
            inter.resultSpecified = true;


            Assert.IsNotNull(inter, "inter");
            Assert.IsNotNull(inter.correctResponses, "inter.correctResponses");
            Assert.IsNotNull(inter.correctResponses.Items, "inter.correctResponses.Items");
            Assert.AreEqual(2, inter.correctResponses.Items.Length, "correct response count");
            Assert.AreEqual(2, inter.learnerResponse.Items.Length, "learner response count");
            Assert.AreEqual(2, ((correctResponsesTypeCorrectResponseFillIn)inter.correctResponses.Items[0]).matchText.Length, "correct response 1 match count");
            Assert.AreEqual("answer 1", ((correctResponsesTypeCorrectResponseFillIn)inter.correctResponses.Items[0]).matchText[0].Value, "correct response 1");
            Assert.AreEqual("answer 1.1", ((correctResponsesTypeCorrectResponseFillIn)inter.correctResponses.Items[0]).matchText[1].Value, "correct response 1.1");
            Assert.AreEqual("answer 2", ((correctResponsesTypeCorrectResponseFillIn)inter.correctResponses.Items[1]).matchText[0].Value, "correct response 2");
            Assert.AreEqual("answer 1", ((learnerResponseTypeLearnerResponseFillIn)inter.learnerResponse.Items[0]).Value, "learner response");
            Assert.AreEqual("answer 1.1", ((learnerResponseTypeLearnerResponseFillIn)inter.learnerResponse.Items[1]).Value, "learner response");


            cocd.exit          = exit.suspend;
            cocd.exitSpecified = true;
            client.Set(cocd);
            cocd = client.Get();

            inter = cocd.GetInteraction(intFillInID, false);
            Assert.IsNotNull(inter, "inter");
            Assert.IsNotNull(inter.correctResponses, "inter.correctResponses");
            Assert.IsNotNull(inter.correctResponses.Items, "inter.correctResponses.Items");
            Assert.AreEqual(2, inter.correctResponses.Items.Length, "correct response count");
            Assert.AreEqual(2, inter.learnerResponse.Items.Length, "learner response count");
            Assert.AreEqual(2, ((correctResponsesTypeCorrectResponseFillIn)inter.correctResponses.Items[0]).matchText.Length, "correct response 1 match count");
            Assert.AreEqual("answer 1", ((correctResponsesTypeCorrectResponseFillIn)inter.correctResponses.Items[0]).matchText[0].Value, "correct response 1");
            Assert.AreEqual("answer 1.1", ((correctResponsesTypeCorrectResponseFillIn)inter.correctResponses.Items[0]).matchText[1].Value, "correct response 1.1");
            Assert.AreEqual("answer 2", ((correctResponsesTypeCorrectResponseFillIn)inter.correctResponses.Items[1]).matchText[0].Value, "correct response 2");
            Assert.AreEqual("answer 1", ((learnerResponseTypeLearnerResponseFillIn)inter.learnerResponse.Items[0]).Value, "learner response");
            Assert.AreEqual("answer 1.1", ((learnerResponseTypeLearnerResponseFillIn)inter.learnerResponse.Items[1]).Value, "learner response");
        }
        private void interactionsTest(bool testArrayClear)
        {
            LETSIRTE_Service client = getClient();

            string int1ID = "test_interaction_1";

            cocdType        cocd = client.Get();
            interactionType int1 = cocd.GetInteraction(int1ID, true);

            int1.type             = interactionTypeType.fill_in;
            int1.correctResponses = new correctResponsesType();
            int1.correctResponses.ItemsElementName = new ItemsChoiceType[] { ItemsChoiceType.correctResponseFillIn };
            correctResponsesTypeCorrectResponseFillIn rsp = new correctResponsesTypeCorrectResponseFillIn();

            int1.correctResponses.Items = new object[] { rsp };
            rsp.caseMatters             = false;
            rsp.orderMatters            = false;
            correctResponsesTypeCorrectResponseFillInMatchText match  = new correctResponsesTypeCorrectResponseFillInMatchText();
            correctResponsesTypeCorrectResponseFillInMatchText match2 = new correctResponsesTypeCorrectResponseFillInMatchText();

            rsp.matchText = new correctResponsesTypeCorrectResponseFillInMatchText[] { match, match2 };
            match.Value   = "answer 42";
            match2.Value  = "answer 2";

            int1.learnerResponse = new learnerResponseType();
            int1.learnerResponse.ItemsElementName = new ItemsChoiceType1[] { ItemsChoiceType1.learnerResponseFillIn };
            learnerResponseTypeLearnerResponseFillIn lrsp = new learnerResponseTypeLearnerResponseFillIn();

            int1.learnerResponse.Items = new object[] { lrsp };
            lrsp.Value = "ANSWER 1";

            int1.result             = interactionTypeResult.correct;
            int1.resultSpecified    = true;
            int1.timeStamp          = DateTime.UtcNow;
            int1.timeStampSpecified = true;

            int1.objectiveIds = new string[] { "id1", "id2" };

            cocd.exitSpecified = true;
            cocd.exit          = exit.suspend;
            client.Set(cocd);
            cocd = client.Get();

            int1 = cocd.GetInteraction(int1ID, false);
            Assert.AreEqual(interactionTypeType.fill_in, int1.type);

            Assert.AreEqual(((correctResponsesTypeCorrectResponseFillIn)int1.correctResponses.Items[0]).matchText[0].Value, "answer 42");
            learnerResponseTypeLearnerResponseFillIn lr = (learnerResponseTypeLearnerResponseFillIn)int1.learnerResponse.Items[0];

            Thread.Sleep(1000);

            Assert.AreEqual(lr.Value.ToLower(), "answer 1");
            Assert.AreEqual(interactionTypeResult.correct, int1.result);
            Assert.IsTrue(int1.resultSpecified);
            Assert.Greater(DateTime.UtcNow, int1.timeStamp);
            Assert.IsTrue(int1.timeStampSpecified);
            Assert.AreEqual("id2", int1.objectiveIds[1]);

            if (testArrayClear)
            {
                cocd.exitSpecified         = true;
                cocd.exit                  = exit.suspend;
                int1.learnerResponse.Items = new object[] { };
                int1.objectiveIds          = new string[] { };
                client.Set(cocd);
                cocd = client.Get();

                int1 = cocd.GetInteraction(int1ID, false);

                // null or length==0 is acceptable
                if (int1.learnerResponse != null && int1.learnerResponse.Items != null)
                {
                    Assert.AreEqual(0, int1.learnerResponse.Items.Length, "Failed to clear array");
                }
                // null or length==0 is acceptable
                if (int1.objectiveIds != null)
                {
                    Assert.AreEqual(0, int1.objectiveIds.Length, "Failed to clear array");
                }
            }
        }