コード例 #1
0
        public void Seed_Options_Ok()
        {
            TokenTextLayerPartSeeder seeder = new TokenTextLayerPartSeeder();

            seeder.SetSeedOptions(_seedOptions);
            seeder.Configure(new TokenTextLayerPartSeederOptions
            {
                MaxFragmentCount = 3
            });

            // item with text
            IItem item = _factory.GetItemSeeder().GetItem(1, "facet");
            TokenTextPartSeeder textSeeder = new TokenTextPartSeeder();

            textSeeder.SetSeedOptions(_seedOptions);
            item.Parts.Add(textSeeder.GetPart(_item, null, _factory));

            IPart part = seeder.GetPart(item, "fr.net.fusisoft.comment", _factory);

            Assert.NotNull(part);

            TokenTextLayerPart <CommentLayerFragment> lp =
                part as TokenTextLayerPart <CommentLayerFragment>;

            Assert.NotNull(lp);
            Assert.NotEmpty(lp.Fragments);
        }
コード例 #2
0
        private static TokenTextLayerPart <CommentLayerFragment> GetPart(
            bool fragments = true)
        {
            var part = new TokenTextLayerPart <CommentLayerFragment>
            {
                ItemId    = Guid.NewGuid().ToString(),
                RoleId    = "some-role",
                CreatorId = "zeus",
                UserId    = "another"
            };

            if (fragments)
            {
                for (int i = 1; i <= 3; i++)
                {
                    part.AddFragment(new CommentLayerFragment
                    {
                        Location = $"1.{i}",
                        Tag      = i > 1 ? "scholarly" : null,
                        Text     = "Text {i}.\nEnd."
                    });
                }
            }
            return(part);
        }
コード例 #3
0
        public void ApplyPatches_DelAndMov_Ok()
        {
            TokenTextLayerPart <CommentLayerFragment> part =
                GetCommentLayerPart(new[] { "1.1", "1.2" });
            string        json = SerializePart(part);
            AnonLayerPart anon = DeserializeAnonLayerPart(json);

            string json2 = anon.ApplyPatches(json, new[]
            {
                "del 1.1",
                "mov 1.2 1.1"
            });

            // anon has been synched to changes in its source JSON
            Assert.Single(anon.Fragments);
            Assert.Equal("1.1", anon.Fragments[0].Location);

            // layer was patched
            TokenTextLayerPart <CommentLayerFragment> part2 =
                (TokenTextLayerPart <CommentLayerFragment>)
                DeserializePart(json2, part.GetType());

            Assert.Single(part2.Fragments);

            CommentLayerFragment fr = part2.Fragments[0];

            Assert.Equal("1.1", fr.Location);
            Assert.Equal("tag", fr.Tag);
            Assert.Equal("Comment 2", fr.Text);
        }
コード例 #4
0
        public void ApplyPatches_Mov_Ok()
        {
            TokenTextLayerPart <CommentLayerFragment> part =
                GetCommentLayerPart(new[] { "1.1", "1.2" });
            string        json = SerializePart(part);
            AnonLayerPart anon = DeserializeAnonLayerPart(json);

            string json2 = anon.ApplyPatches(json, new[] { "mov 1.1 3.1" });

            // anon has been synched to changes in its source JSON
            Assert.Equal(2, anon.Fragments.Count);
            Assert.NotNull(anon.Fragments.Find(fr => fr.Location == "3.1"));
            Assert.NotNull(anon.Fragments.Find(fr => fr.Location == "1.2"));

            // layer was patched
            TokenTextLayerPart <CommentLayerFragment> part2 =
                (TokenTextLayerPart <CommentLayerFragment>)
                DeserializePart(json2, part.GetType());

            Assert.Equal(2, part2.Fragments.Count);

            CommentLayerFragment fr = part2.Fragments.Find(fr => fr.Location == "3.1");

            Assert.NotNull(fr);
            Assert.Equal("3.1", fr.Location);
            Assert.Equal("tag", fr.Tag);
            Assert.Equal("Comment 1", fr.Text);

            fr = part2.Fragments.Find(fr => fr.Location == "1.2");
            Assert.NotNull(fr);
            Assert.Equal("1.2", fr.Location);
            Assert.Equal("tag", fr.Tag);
            Assert.Equal("Comment 2", fr.Text);
        }
コード例 #5
0
        public void GetTextAt_3LinesRange_Ok(string location, string expectedText)
        {
            TokenTextPart textPart = GetTokenTextPart(3);
            TokenTextLayerPart <CommentLayerFragment> layerPart = GetPart();

            string text = layerPart.GetTextAt(textPart, location);

            Assert.Equal(expectedText, text);
        }
コード例 #6
0
        public void GetTextAt_InvalidLocation_Null()
        {
            TokenTextPart textPart = GetTokenTextPart(3);
            TokenTextLayerPart <CommentLayerFragment> layerPart = GetPart();

            string text = layerPart.GetTextAt(textPart, "12.3");

            Assert.Null(text);
        }
コード例 #7
0
        private void SeedParts(IMongoDatabase db)
        {
            var collection = db.GetCollection <MongoPart>(MongoPart.COLLECTION);

            // categories
            CategoriesPart categoriesPart = new CategoriesPart
            {
                Id         = "part-001",
                ItemId     = "item-001",
                RoleId     = "categories",
                CreatorId  = "Odd",
                UserId     = "Odd",
                Categories = { "alpha", "beta" }
            };

            collection.InsertOne(CreateMongoPart(categoriesPart));

            // note
            NotePart notePart = new NotePart
            {
                Id        = "part-002",
                ItemId    = "item-001",
                RoleId    = "note",
                CreatorId = "Odd",
                UserId    = "Odd",
                Text      = "Some notes."
            };

            collection.InsertOne(CreateMongoPart(notePart));

            // layer: comments
            TokenTextLayerPart <CommentLayerFragment> commentLayerPart =
                new TokenTextLayerPart <CommentLayerFragment>
            {
                Id        = "part-003",
                ItemId    = "item-001",
                CreatorId = "Odd",
                UserId    = "Odd"
            };

            commentLayerPart.Fragments.AddRange(new []
            {
                new CommentLayerFragment
                {
                    Location = "1.2",
                    Text     = "The comment to 1.2"
                },
                new CommentLayerFragment
                {
                    Location = "1.3",
                    Text     = "The comment to 1.3"
                }
            });
            collection.InsertOne(CreateMongoPart(commentLayerPart));
        }
コード例 #8
0
        public void ApplyPatches_InvalidPatch_Unchanged()
        {
            TokenTextLayerPart <CommentLayerFragment> part =
                GetCommentLayerPart(new[] { "1.1" });
            string        json = SerializePart(part);
            AnonLayerPart anon = DeserializeAnonLayerPart(json);

            string json2 = anon.ApplyPatches(json, new[] { "fake 1.1" });

            Assert.Equal(json, json2);
        }
コード例 #9
0
        public void ApplyPatches_Empty_Unchanged()
        {
            TokenTextLayerPart <CommentLayerFragment> part =
                GetCommentLayerPart(new[] { "1.1" });
            string        json = SerializePart(part);
            AnonLayerPart anon = DeserializeAnonLayerPart(json);

            string json2 = anon.ApplyPatches(json, Array.Empty <string>());

            Assert.Equal(json, json2);
        }
コード例 #10
0
        public void GetDataPins_WithItem_2()
        {
            Item item = new Item
            {
                CreatorId   = "zeus",
                UserId      = "zeus",
                Title       = "Mock",
                Description = "A mock item",
                FacetId     = "default",
                SortKey     = "mock"
            };
            TokenTextPart textPart = new TokenTextPart
            {
                ItemId    = item.Id,
                CreatorId = item.CreatorId,
                UserId    = item.UserId,
            };

            textPart.Lines.Add(new TextLine
            {
                Text = "quae bixit annis X",
                Y    = 1
            });
            item.Parts.Add(textPart);

            TokenTextLayerPart <OrthographyLayerFragment> layerPart =
                new TokenTextLayerPart <OrthographyLayerFragment>();
            OrthographyLayerFragment fr;

            layerPart.AddFragment(fr = new OrthographyLayerFragment
            {
                Location = "1.2",
                Standard = "vixit",
            });
            item.Parts.Add(layerPart);

            List <DataPin> pins = fr.GetDataPins(item).ToList();

            Assert.Equal(2, pins.Count);

            DataPin pin = pins.Find(p => p.Name == "fr.orthography-txt");

            Assert.NotNull(pin);
            Assert.Equal("bixit", pin.Value);

            pin = pins.Find(p => p.Name == "fr.orthography-std");
            Assert.NotNull(pin);
            Assert.Equal("vixit", pin.Value);
        }
コード例 #11
0
        private TokenTextLayerPart <CommentLayerFragment> GetCommentLayerPart(
            string[] locations)
        {
            TokenTextLayerPart <CommentLayerFragment> part =
                new TokenTextLayerPart <CommentLayerFragment>();

            for (int i = 0; i < locations.Length; i++)
            {
                part.AddFragment(new CommentLayerFragment
                {
                    Location = locations[i],
                    Tag      = "tag",
                    Text     = $"Comment {i + 1}"
                });
            }

            return(part);
        }