Exemplo n.º 1
0
        public void TestExample()
        {
            var id        = new Guid("fd41c918-b88b-4b20-a0a5-a4c32391aaa0");
            var timestamp = new DateTimeOffset(new DateTime(2015, 11, 18, 12, 17, 0));
            var address   = new Uri("mailto:[email protected]");
            var mailbox   = new Mailbox(address);
            var actor     = new Agent(mailbox, "Project Tin Can API");
            var verbUri   = new VerbId("http://example.com/xapi/verbs#sent-a-statement");

            var verbMap        = new LanguageMap(LanguageTag.EnglishUS, "sent");
            var verb           = new Verb(verbUri, verbMap);
            var nameMap        = new LanguageMap(LanguageTag.EnglishUS, "simple statement");
            var descriptionMap = new LanguageMap(LanguageTag.EnglishUS, "A simple Experience API statement. Note that the LRS does not need to have any prior information about the Actor(learner), the verb, or the Activity/ object.");

            var activityId = new ActivityId("http://example.com/xapi/activity/simplestatement");
            var thetype    = new Uri("http://adlnet.gov/expapi/activities/media");
            var definition = new ActivityDefinition(nameMap, descriptionMap, thetype, FSharpOption <Uri> .None);
            var activity   = new Activity(activityId, definition);

            var statement = new Statement(actor, verb, activity, id, timestamp: timestamp);

            Assert.NotNull(statement.Actor);
            Assert.NotNull(statement.Object);
            Assert.NotNull(statement.Timestamp);
            Assert.True(statement.Object is Activity);
            Assert.Null(statement.Authority);
        }
Exemplo n.º 2
0
        public void TestInvalidInit()
        {
            var uri = new VerbId("http://www.gowithfloat.com");
            var map = new LanguageMap(LanguageTag.EnglishUS, "floated");

            Assert.Throws <ArgumentNullException>(() => new Verb(uri, null));
        }
Exemplo n.º 3
0
        public Verb TestValidInit()
        {
            var uri = new VerbId("http://www.gowithfloat.com");
            var map = new LanguageMap(LanguageTag.EnglishUS, "floated");

            return(new Verb(uri, map));
        }
Exemplo n.º 4
0
        public void TestSerializeExample()
        {
            // see https://github.com/adlnet/xAPI-Spec/blob/master/xAPI-Data.md#example-3
            var expected = FormatJson(@"{
                ""id"":""http://example.com/xapi/verbs#defenestrated"",
                ""display"":{
                    ""en-US"":""defenestrated"",
                    ""es"" : ""defenestrado""
                }
            }");

            var id      = new VerbId(new Uri("http://example.com/xapi/verbs#defenestrated"));
            var display = new LanguageMap(new Dictionary <ILanguageTag, string>
            {
                {
                    new LanguageTag(Language.English, Region.UnitedStates), "defenestrated"
                },
                {
                    new LanguageTag(Language.Spanish), "defenestrado"
                },
            });

            var verb   = new Verb(id, display);
            var actual = FormatJson(Serialize.Verb(verb));

            Assert.Equal(expected, actual);
        }
Exemplo n.º 5
0
        /// <summary>
        /// To the parameter map.
        /// </summary>
        /// <param name="version">The version.</param>
        /// <returns>Dictionary&lt;System.String, System.String&gt;.</returns>
        public Dictionary <string, string> ToParameterMap(TCAPIVersion version)
        {
            var result = new Dictionary <string, string>();

            if (Agent != null)
            {
                result.Add("agent", Agent.ToJSON(version));
            }
            if (VerbId != null)
            {
                result.Add("verb", VerbId.ToString());
            }
            if (ActivityId != null)
            {
                result.Add("activity", ActivityId);
            }
            if (Registration != null)
            {
                result.Add("registration", Registration.Value.ToString());
            }
            if (RelatedActivities != null)
            {
                result.Add("related_activities", RelatedActivities.Value.ToString());
            }
            if (RelatedAgents != null)
            {
                result.Add("related_agents", RelatedAgents.Value.ToString());
            }
            if (Since != null)
            {
                result.Add("since", Since.Value.ToString(ISO_DATE_TIME_FORMAT));
            }
            if (Until != null)
            {
                result.Add("until", Until.Value.ToString(ISO_DATE_TIME_FORMAT));
            }
            if (Limit != null)
            {
                result.Add("limit", Limit.ToString());
            }
            if (Format != null)
            {
                result.Add("format", Format.ToString());
            }
            if (Ascending != null)
            {
                result.Add("ascending", Ascending.Value.ToString());
            }

            return(result);
        }
Exemplo n.º 6
0
        public void TestDeserializeExample()
        {
            var id      = new VerbId(new Uri("http://example.com/xapi/verbs#defenestrated"));
            var display = new LanguageMap(new Dictionary <ILanguageTag, string>
            {
                {
                    new LanguageTag(Language.English, Region.UnitedStates), "defenestrated"
                },
                {
                    new LanguageTag(Language.Spanish), "defenestrado"
                },
            });

            var expected = new Verb(id, display);

            // see https://github.com/adlnet/xAPI-Spec/blob/master/xAPI-Data.md#example-3
            var jsonString = FormatJson(@"{
                ""id"":""http://example.com/xapi/verbs#defenestrated"",
                ""display"":{
                    ""en-US"":""defenestrated"",
                    ""es"" : ""defenestrado""
                }
            }");

            var actual = Json.Deserialize.ParseVerb(jsonString).Value;

            Assert.Equal(expected.Id, actual.Id);
            Assert.Equal(expected.Display, actual.Display);
            Assert.Equal(expected, actual);

            var notDisplay = new LanguageMap(new Dictionary <ILanguageTag, string>
            {
                {
                    new LanguageTag(Language.English, Region.UnitedStates), "defenestrated"
                },
            });

            var notActual = new Verb(id, notDisplay);

            Assert.Equal(expected.Id, notActual.Id);
            Assert.NotEqual(expected.Display, notActual.Display);

            // verb comparison is done using ID only
            Assert.Equal(expected, notActual);
        }
Exemplo n.º 7
0
        public void TestExample()
        {
            var uri = new VerbId("http://example.com/xapi/verbs#defenestrated");
            var map = new LanguageMap(new Dictionary <ILanguageTag, string>
            {
                {
                    new LanguageTag(Language.English, Region.UnitedStates), "defenestrated"
                },
                {
                    new LanguageTag(Language.Spanish, Region.Mexico), "defenestrado"
                },
            });

            var verb = new Verb(uri, map);

            Assert.Equal(uri, verb.Id);
            Assert.Equal(map, verb.Display);

            var iverb = verb as IVerb;

            Assert.Equal(uri, iverb.Id);
            Assert.Equal(map, iverb.Display);
        }
Exemplo n.º 8
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        internal string ToQueryString()
        {
            var dictionary = new Dictionary <string, string>();

            if (Agent != null)
            {
                dictionary.Add("agent", Agent.ToJson());
            }

            if (VerbId != null)
            {
                dictionary.Add("verb", VerbId.ToString());
            }

            if (ActivityId != null)
            {
                dictionary.Add("activity", ActivityId.ToString());
            }

            if (Registration.HasValue)
            {
                dictionary.Add("registration", Registration.Value.ToString());
            }

            if (RelatedActivities.HasValue)
            {
                dictionary.Add("related_activities", RelatedActivities.Value ? "true" : "false");
            }

            if (RelatedAgents.HasValue)
            {
                dictionary.Add("related_agents", RelatedAgents.Value ? "true" : "false");
            }

            if (Since.HasValue)
            {
                dictionary.Add("since", Since.Value.ToString("o"));
            }

            if (Until.HasValue)
            {
                dictionary.Add("until", Until.Value.ToString("o"));
            }

            if (Limit.HasValue)
            {
                dictionary.Add("limit", Limit.Value.ToString());
            }

            if (Format.HasValue)
            {
                dictionary.Add("format", Format.ToString().ToLower());
            }

            if (Attachments.HasValue)
            {
                dictionary.Add("attachments", Attachments.Value ? "true" : "false");
            }

            if (Ascending.HasValue)
            {
                dictionary.Add("ascending", Ascending.Value ? "true" : "false");
            }

            if (!dictionary.Any())
            {
                return(string.Empty);
            }

            return(string.Concat("?", string.Join("&", dictionary.Select(x => $"{WebUtility.UrlEncode(x.Key)}={WebUtility.UrlEncode(x.Value)}"))));
        }