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);
            }
        }
Exemple #2
0
        private static WitnessesLayerFragment GetFragment(int count)
        {
            WitnessesLayerFragment fr = new WitnessesLayerFragment
            {
                Location = "1.23",
            };

            for (int i = 0; i < count; i++)
            {
                fr.Witnesses.Add(new Witness
                {
                    Id       = new string((char)('A' + i), 1),
                    Citation = $"1.{i}",
                    Text     = "Text {i + 1}",
                    Note     = "Note {i + 1}\n.End."
                });
            }
            return(fr);
        }
        /// <summary>
        /// Creates and seeds a new part.
        /// </summary>
        /// <param name="item">The item this part should belong to.</param>
        /// <param name="location">The location.</param>
        /// <param name="baseText">The base text.</param>
        /// <returns>A new fragment.</returns>
        /// <exception cref="ArgumentNullException">item or location or
        /// baseText</exception>
        public override ITextLayerFragment GetFragment(
            IItem item, string location, string baseText)
        {
            if (item == null)
            {
                throw new ArgumentNullException(nameof(item));
            }
            if (location == null)
            {
                throw new ArgumentNullException(nameof(location));
            }
            if (baseText == null)
            {
                throw new ArgumentNullException(nameof(baseText));
            }

            if (_options?.Ids == null || _options.Ids.Length == 0)
            {
                return(null);
            }

            WitnessesLayerFragment fragment = new WitnessesLayerFragment
            {
                Location = location
            };

            int count = Randomizer.Seed.Next(1, 4);

            while (count > 0)
            {
                fragment.Witnesses.Add(new Faker <Witness>()
                                       .RuleFor(w => w.Id, f => f.PickRandom(_options.Ids))
                                       .RuleFor(w => w.Citation, f => $"p.{f.Random.Int(1, 101)}")
                                       .RuleFor(w => w.Text, f => f.Lorem.Sentence())
                                       .RuleFor(w => w.Note,
                                                f => f.Random.Bool()? f.Lorem.Sentence() : null)
                                       .Generate());
                count--;
            }

            return(fragment);
        }
Exemple #4
0
        public void Fragment_Is_Serializable()
        {
            WitnessesLayerFragment fr = GetFragment(3);

            string json = TestHelper.SerializeFragment(fr);
            WitnessesLayerFragment fr2 =
                TestHelper.DeserializeFragment <WitnessesLayerFragment>(json);

            Assert.Equal(fr.Location, fr2.Location);
            int i = 0;

            foreach (Witness expected in fr.Witnesses)
            {
                Witness actual = fr2.Witnesses[i++];
                Assert.Equal(expected.Id, actual.Id);
                Assert.Equal(expected.Citation, actual.Citation);
                Assert.Equal(expected.Text, actual.Text);
                Assert.Equal(expected.Note, actual.Note);
            }
        }
Exemple #5
0
        public void GetDataPins_Witnesses_3()
        {
            WitnessesLayerFragment fr = GetFragment(3);

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

            Assert.Equal(3, pins.Count);

            DataPin pin = pins[0];

            Assert.Equal("fr.id", pin.Name);
            Assert.Equal("A", pin.Value);

            pin = pins[1];
            Assert.Equal("fr.id", pin.Name);
            Assert.Equal("B", pin.Value);

            pin = pins[2];
            Assert.Equal("fr.id", pin.Name);
            Assert.Equal("C", pin.Value);
        }
Exemple #6
0
        public void GetDataPins_NoWitnesses_0()
        {
            WitnessesLayerFragment fr = GetFragment(0);

            Assert.Empty(fr.GetDataPins());
        }