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); } }
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); }
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); } }
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); }
public void GetDataPins_NoWitnesses_0() { WitnessesLayerFragment fr = GetFragment(0); Assert.Empty(fr.GetDataPins()); }