public void TestProperties()
        {
            var pairs = new CharacterStringPair(new Dictionary <string, ICharacterString>
            {
                { "ben", new CharacterString("3") },
                { "chris", new CharacterString("2") },
                { "troy", new CharacterString("4") },
                { "freddie", new CharacterString("1") },
            });
            var source = new List <IInteractionComponent>
            {
                new InteractionComponent("ben", LanguageMap.EnglishUS("Ben")),
                new InteractionComponent("chris", LanguageMap.EnglishUS("Chris")),
                new InteractionComponent("troy", LanguageMap.EnglishUS("Troy")),
                new InteractionComponent("freddie", LanguageMap.EnglishUS("Freddie")),
            };
            var target = new List <IInteractionComponent>
            {
                new InteractionComponent("1", LanguageMap.EnglishUS("Swift Kick in the Grass")),
                new InteractionComponent("2", LanguageMap.EnglishUS("We got Runs")),
                new InteractionComponent("3", LanguageMap.EnglishUS("Duck")),
                new InteractionComponent("4", LanguageMap.EnglishUS("Van Delay Industries")),
            };
            var extensions = new Dictionary <Uri, object> {
                { new Uri("http://www.example.com/ext"), "ext" }
            };
            var definition = new MatchingInteractionActivityDefinition(
                new ResponsePattern(pairs),
                source,
                target,
                LanguageMap.EnglishUS("Long Fill-in"),
                LanguageMap.EnglishUS("Match these people to their kickball team:"),
                new Uri("http://www.example.com/more"),
                extensions);

            Assert.Equal(new ResponsePattern(pairs), definition.CorrectResponsesPattern);
            Assert.Equal(LanguageMap.EnglishUS("Match these people to their kickball team:"), definition.Description);
            Assert.Equal(extensions, definition.Extensions);
            Assert.Equal(Interaction.Matching, definition.InteractionType);
            Assert.Equal(new Uri("http://www.example.com/more"), definition.MoreInfo);
            Assert.Equal(LanguageMap.EnglishUS("Long Fill-in"), definition.Name);
            Assert.Equal(source, definition.Source);
            Assert.Equal(target, definition.Target);
            Assert.Equal(new Uri("http://adlnet.gov/expapi/activities/cmi.interaction"), definition.Type);

            var idefinition = definition as IMatchingInteractionActivityDefinition;

            Assert.Equal(new ResponsePattern(pairs), idefinition.CorrectResponsesPattern);
            Assert.Equal(LanguageMap.EnglishUS("Match these people to their kickball team:"), idefinition.Description);
            Assert.Equal(extensions, idefinition.Extensions);
            Assert.Equal(Interaction.Matching, idefinition.InteractionType);
            Assert.Equal(new Uri("http://www.example.com/more"), idefinition.MoreInfo);
            Assert.Equal(LanguageMap.EnglishUS("Long Fill-in"), idefinition.Name);
            Assert.Equal(source, idefinition.Source);
            Assert.Equal(target, idefinition.Target);
            Assert.Equal(new Uri("http://adlnet.gov/expapi/activities/cmi.interaction"), idefinition.Type);
        }
        public MatchingInteractionActivityDefinition TestValidInit()
        {
            var pairs = new CharacterStringPair(new Dictionary <string, ICharacterString>
            {
                { "ben", new CharacterString("3") },
                { "chris", new CharacterString("2") },
                { "troy", new CharacterString("4") },
                { "freddie", new CharacterString("1") },
            });
            var source = new List <IInteractionComponent>
            {
                new InteractionComponent("ben", LanguageMap.EnglishUS("Ben")),
                new InteractionComponent("chris", LanguageMap.EnglishUS("Chris")),
                new InteractionComponent("troy", LanguageMap.EnglishUS("Troy")),
                new InteractionComponent("freddie", LanguageMap.EnglishUS("Freddie")),
            };
            var target = new List <IInteractionComponent>
            {
                new InteractionComponent("1", LanguageMap.EnglishUS("Swift Kick in the Grass")),
                new InteractionComponent("2", LanguageMap.EnglishUS("We got Runs")),
                new InteractionComponent("3", LanguageMap.EnglishUS("Duck")),
                new InteractionComponent("4", LanguageMap.EnglishUS("Van Delay Industries")),
            };
            var definition1 = new MatchingInteractionActivityDefinition(
                new ResponsePattern(pairs),
                source,
                target,
                LanguageMap.EnglishUS("Long Fill-in"),
                LanguageMap.EnglishUS("Match these people to their kickball team:"));
            var definition2 = new MatchingInteractionActivityDefinition(
                new ResponsePattern(pairs),
                source,
                target,
                LanguageMap.EnglishUS("Long Fill-in"),
                LanguageMap.EnglishUS("Match these people to their kickball team:"),
                new Uri("http://www.example.com/more"));

            return(new MatchingInteractionActivityDefinition(
                       new ResponsePattern(pairs),
                       source,
                       target,
                       LanguageMap.EnglishUS("Long Fill-in"),
                       LanguageMap.EnglishUS("Match these people to their kickball team:"),
                       new Uri("http://www.example.com/more"),
                       new Dictionary <Uri, object> {
                { new Uri("http://www.example.com/ext"), "ext" }
            }));
        }
        public void TestPairToString()
        {
            // todo: this is the example given in the docs for interaction definitions
            // however, this seems to break from the format
            // for example, `1:` isn't a valid numeric response, but `1[:]` is
            // also, the pattern for `lunch` is omitted
            // we should figure out why this is weird
            var result = "pong[.]1:[,]dg[.]:10[,]lunch[.]";

            var cs2 = new CharacterStringPair(new Dictionary <string, ICharacterString>
            {
                { "pong", new CharacterStringNumeric(min: 1) },
                { "dg", new CharacterStringNumeric(max: 10) },
                { "lunch", new CharacterString(true) },
            });

            // Assert.Equal(result, cs2.ToString());
            Assert.True(true);
        }
        public PerformanceInteractionActivityDefinition TestValidInit()
        {
            var steps = new List <IInteractionComponent>
            {
                new InteractionComponent("pong", LanguageMap.EnglishUS("Net pong matches won")),
                new InteractionComponent("dg", LanguageMap.EnglishUS("Strokes over par in disc golf at Liberty")),
                new InteractionComponent("lunch", LanguageMap.EnglishUS("Lunch having been eaten")),
            };

            var pairs = new CharacterStringPair(new Dictionary <string, ICharacterString>
            {
                { "pong", new CharacterStringNumeric(min: 1) },
                { "dg", new CharacterStringNumeric(max: 10) },
                { "lunch", new CharacterString(true) },
            });

            var def1 = new PerformanceInteractionActivityDefinition(
                new ResponsePattern(pairs),
                steps,
                LanguageMap.EnglishUS("Appendix C"),
                LanguageMap.EnglishUS("This interaction measures performance over a day of RS sports:"));

            var def2 = new PerformanceInteractionActivityDefinition(
                new ResponsePattern(pairs),
                steps,
                LanguageMap.EnglishUS("Appendix C"),
                LanguageMap.EnglishUS("This interaction measures performance over a day of RS sports:"),
                new Uri("http://example.com/more"));

            return(new PerformanceInteractionActivityDefinition(
                       new ResponsePattern(pairs),
                       steps,
                       LanguageMap.EnglishUS("Appendix C"),
                       LanguageMap.EnglishUS("This interaction measures performance over a day of RS sports:"),
                       new Uri("http://example.com/more"),
                       new Dictionary <Uri, object> {
                { new Uri("http://example.com/ext"), "ext" }
            }));
        }