Example #1
0
        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);
        }
Example #2
0
        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);
            }
        }
Example #5
0
        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);
        }
Example #6
0
        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);
        }
Example #11
0
        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...
        }
Example #13
0
        /// <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);
        }