示例#1
0
        public void BehaviourTest(StructureTestData testData)
        {
            using (var sr = new StringReader(testData.Ftl))
            {
                var resource  = new RuntimeParser().GetResource(sr);
                var entryJson = RuntimeAstToJson.ToJson(resource.Entries);
                entryJson.Should().BeOfType <JObject>();
                var entries = (JObject)entryJson;

                // For some reason, this does a really shallow test -- just checks
                // keys in the objects rather than the contents.  Probably better
                // to just replace the expected outputs with the whole serialized
                // json.
                foreach (var expectedKeyValue in testData.Expected)
                {
                    entries.Should().ContainKey(expectedKeyValue.Key);
                    var entry = entries[expectedKeyValue.Key];

                    expectedKeyValue.Value.Should().NotBeNull();
                    expectedKeyValue.Value.Should().BeOfType <JObject>();
                    var expected = (JObject)expectedKeyValue.Value;

                    if (expected["value"].Type == JTokenType.Boolean &&
                        (bool)((JValue)expected["value"]).Value)
                    {
                        entry.Should().Match <JToken>(
                            x => x.Type == JTokenType.String ||
                            x.Type == JTokenType.Object && ((JObject)x).ContainsKey("val"));
                    }
                    else
                    {
                        entry.Should().Match <JToken>(
                            x => x.Type != JTokenType.String &&
                            !(x.Type == JTokenType.Object && ((JObject)x).ContainsKey("val")));
                    }

                    if (expected.ContainsKey("attributes"))
                    {
                        entry.Type.Should().Be(JTokenType.Object);
                        var entryObj = (JObject)entry;
                        entryObj.Should().ContainKey("attrs");

                        var expectedKeys = ((JObject)expected["attributes"])
                                           .Properties().Select(x => x.Name);
                        var entryKeys = ((JObject)entryObj["attrs"])
                                        .Properties().Select(x => x.Name);

                        expectedKeys.Should().BeEquivalentTo(entryKeys);
                    }
                    else
                    {
                        entry.Should().Match <JToken>(
                            x => x.Type == JTokenType.String ||
                            (x.Type == JTokenType.Object &&
                             !((JObject)x).ContainsKey("attrs")));
                    }
                }
            }
        }
示例#2
0
        public void StructureTest(StructureTestData testData)
        {
            using (var sr = new StringReader(testData.Ftl))
            {
                var resource = new RuntimeParser().GetResource(sr);

                var  entryJson    = RuntimeAstToJson.ToJson(resource.Entries);
                bool resultsEqual = JToken.DeepEquals(entryJson, testData.Expected);
                if (!resultsEqual)
                {
                    Console.WriteLine("parsed =");
                    Console.WriteLine(entryJson);
                    Console.WriteLine("expected =");
                    Console.WriteLine(testData.Expected);
                    var jdp  = new JsonDiffPatch();
                    var diff = jdp.Diff(entryJson, testData.Expected);
                    Console.WriteLine("diff =");
                    Console.WriteLine(diff);
                }
                resultsEqual.Should().BeTrue();
            }
        }