public void Seed_WithOptions_Ok() { ChronologyLayerFragmentSeeder seeder = new ChronologyLayerFragmentSeeder(); seeder.SetSeedOptions(_seedOptions); seeder.Configure(new ChronologyLayerFragmentSeederOptions { Tags = new[] { "battle", "priesthood", "consulship" } }); ITextLayerFragment fragment = seeder.GetFragment(_item, "1.1", "alpha"); Assert.NotNull(fragment); ChronologyLayerFragment fr = fragment as ChronologyLayerFragment; Assert.NotNull(fr); Assert.Equal("1.1", fr.Location); Assert.NotNull(fr.Label); Assert.False(fr.Date.A.IsUndefined()); Assert.NotNull(fr.EventId); Assert.NotNull(fr.Tag); }
public void Seed_WithOptions_Ok() { ApparatusLayerFragmentSeeder seeder = new ApparatusLayerFragmentSeeder(); seeder.SetSeedOptions(_seedOptions); seeder.Configure(new ApparatusLayerFragmentSeederOptions { Authors = new[] { "alpha", "beta", "gamma" } }); ITextLayerFragment fragment = seeder.GetFragment(_item, "1.1", "alpha"); Assert.NotNull(fragment); ApparatusLayerFragment fr = fragment as ApparatusLayerFragment; Assert.NotNull(fr); Assert.Equal("1.1", fr.Location); Assert.NotEmpty(fr.Entries); }
public void Seed_WithTags_Ok() { CommentLayerFragmentSeeder seeder = new CommentLayerFragmentSeeder(); seeder.SetSeedOptions(_seedOptions); seeder.Configure(new CommentLayerFragmentSeederOptions { Tags = new[] { "alpha", "beta", "gamma" } }); ITextLayerFragment fragment = seeder.GetFragment(_item, "1.1", "alpha"); Assert.NotNull(fragment); CommentLayerFragment fr = fragment as CommentLayerFragment; Assert.NotNull(fr); Assert.Equal("1.1", fr.Location); Assert.NotNull(fr.Tag); Assert.NotNull(fr.Text); }
public void Seed_ValidOptions_Ok() { WitnessesLayerFragmentSeeder seeder = new WitnessesLayerFragmentSeeder(); seeder.SetSeedOptions(_seedOptions); string[] ids = new[] { "alpha", "beta", "gamma" }; seeder.Configure(new WitnessesLayerFragmentSeederOptions { Ids = ids }); ITextLayerFragment fragment = seeder.GetFragment(_item, "1.1", "alpha"); Assert.NotNull(fragment); WitnessesLayerFragment fr = fragment as WitnessesLayerFragment; Assert.NotNull(fr); Assert.Equal("1.1", fr.Location); Assert.NotEmpty(fr.Witnesses); foreach (Witness witness in fr.Witnesses) { Assert.True(Array.IndexOf(ids, witness.Id) > -1); Assert.NotNull(witness.Citation); Assert.NotNull(witness.Text); } }
public void Seed_WithTags_Ok() { OrthographyLayerFragmentSeeder seeder = new OrthographyLayerFragmentSeeder(); seeder.SetSeedOptions(_seedOptions); seeder.Configure(new OrthographyLayerFragmentSeederOptions { Tags = new[] { "alpha", "beta", "gamma" } }); ITextLayerFragment fragment = seeder.GetFragment(_item, "1.1", "alpha"); Assert.NotNull(fragment); OrthographyLayerFragment fr = fragment as OrthographyLayerFragment; Assert.NotNull(fr); Assert.Equal("1.1", fr.Location); Assert.NotNull(fr.Standard); Assert.Single(fr.Operations); MspOperation op = MspOperation.Parse(fr.Operations[0]); Assert.NotNull(op.Tag); }
public static string SerializeFragment(ITextLayerFragment fr) { if (fr == null) { throw new ArgumentNullException(nameof(fr)); } return(JsonSerializer.Serialize(fr, fr.GetType(), _options)); }
public void Seed_Ok() { VarQuotationsLayerFragmentSeeder seeder = new VarQuotationsLayerFragmentSeeder(); ITextLayerFragment fragment = seeder.GetFragment(_item, "1.1", "alpha"); Assert.NotNull(fragment); VarQuotationsLayerFragment fr = fragment as VarQuotationsLayerFragment; Assert.NotNull(fr); Assert.Equal("1.1", fr.Location); // TODO other assertions... }
public void Seed_Ok() { InterpolationsLayerFragmentSeeder seeder = new InterpolationsLayerFragmentSeeder(); ITextLayerFragment fragment = seeder.GetFragment(null, "1.1", "alpha"); Assert.NotNull(fragment); InterpolationsLayerFragment fr = fragment as InterpolationsLayerFragment; Assert.NotNull(fr); Assert.Equal("1.1", fr.Location); Assert.NotEmpty(fr.Interpolations); }
public void Seed_WithOptions_Ok() { LemmaTagLayerFragmentSeeder seeder = new LemmaTagLayerFragmentSeeder(); seeder.SetSeedOptions(_seedOptions); ITextLayerFragment fragment = seeder.GetFragment(_item, "1.1", "alpha"); Assert.NotNull(fragment); LemmaTagLayerFragment fr = fragment as LemmaTagLayerFragment; Assert.NotNull(fr); Assert.Equal("1.1", fr.Location); Assert.NotEmpty(fr.Value); Assert.NotEmpty(fr.NormValue); }
public void Seed_WithoutTags_NullTag() { CommentLayerFragmentSeeder seeder = new CommentLayerFragmentSeeder(); seeder.SetSeedOptions(_seedOptions); ITextLayerFragment fragment = seeder.GetFragment(_item, "1.1", "alpha"); Assert.NotNull(fragment); CommentLayerFragment fr = fragment as CommentLayerFragment; Assert.NotNull(fr); Assert.Equal("1.1", fr.Location); Assert.Null(fr.Tag); Assert.NotNull(fr.Text); }
public void Seed_WithoutTags_Ok() { OrthographyLayerFragmentSeeder seeder = new OrthographyLayerFragmentSeeder(); ITextLayerFragment fragment = seeder.GetFragment(_item, "1.1", "alpha"); Assert.NotNull(fragment); OrthographyLayerFragment fr = fragment as OrthographyLayerFragment; Assert.NotNull(fr); Assert.Equal("1.1", fr.Location); Assert.NotNull(fr.Standard); Assert.Single(fr.Operations); MspOperation op = MspOperation.Parse(fr.Operations[0]); Assert.Null(op.Tag); }
public void Seed_WithOptions_Ok() { LingTagsLayerFragmentSeeder seeder = new LingTagsLayerFragmentSeeder(); seeder.SetSeedOptions(_seedOptions); seeder.Configure(new LingTagsLayerFragmentSeederOptions { Entries = LoadThesaurusEntries() }); ITextLayerFragment fragment = seeder.GetFragment(_item, "1.1", "alpha"); Assert.NotNull(fragment); LingTagsLayerFragment fr = fragment as LingTagsLayerFragment; Assert.NotNull(fr); Assert.Equal("1.1", fr.Location); Assert.Equal(3, fr.Forms.Count); // TODO other assertions... }
/// <summary> /// Creates and seeds a new part with its fragments. The fragment /// type comes from the part's role ID. /// </summary> /// <param name="item">The item this part should belong to.</param> /// <param name="roleId">The optional part role ID.</param> /// <param name="factory">The part seeder factory. This is used /// for layer parts, which need to seed a set of fragments.</param> /// <returns>A new part.</returns> /// <exception cref="ArgumentNullException">item or factory</exception> public override IPart GetPart(IItem item, string roleId, PartSeederFactory factory) { if (item == null) { throw new ArgumentNullException(nameof(item)); } if (factory == null) { throw new ArgumentNullException(nameof(factory)); } if (_options == null || _options.MaxFragmentCount < 1) { return(null); } // get the base text part; nothing to do if none TokenTextPart textPart = item.Parts .OfType <TokenTextPart>() .FirstOrDefault(); if (textPart == null) { return(null); } // get the seeder; nothing to do if none string frTypeId = StripColonSuffix(roleId); IFragmentSeeder seeder = factory.GetFragmentSeeder("seed." + frTypeId); if (seeder == null) { return(null); } // get the layer part for the specified fragment type Type constructedType = typeof(TokenTextLayerPart <>) .MakeGenericType(seeder.GetFragmentType()); IPart part = (IPart)Activator.CreateInstance(constructedType); // seed metadata SetPartMetadata(part, frTypeId, item); // seed by adding fragments int count = Randomizer.Seed.Next(1, _options.MaxFragmentCount); IList <Tuple <string, string> > locAndTexts = PickLocAndTexts(textPart, count); // must invoke AddFragment via reflection, as the closed type // is known only at runtime foreach (var lt in locAndTexts) { ITextLayerFragment fr = seeder.GetFragment( item, lt.Item1, lt.Item2); if (fr != null) { constructedType.InvokeMember("AddFragment", BindingFlags.InvokeMethod, null, part, new[] { fr }); } } return(part); }