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); }
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); }
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); }
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); }
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); }
public void GetTextAt_InvalidLocation_Null() { TokenTextPart textPart = GetTokenTextPart(3); TokenTextLayerPart <CommentLayerFragment> layerPart = GetPart(); string text = layerPart.GetTextAt(textPart, "12.3"); Assert.Null(text); }
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)); }
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); }
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); }
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); }
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); }