/// <summary> /// Creates and seeds a new part. /// </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)); } WordFormsPart part = new WordFormsPart(); SetPartMetadata(part, roleId, item); for (int n = 1; n <= Randomizer.Seed.Next(1, 3 + 1); n++) { WordForm form = new Faker <WordForm>() .RuleFor(w => w.Lemma, f => f.Lorem.Word()) .RuleFor(w => w.Homograph, f => (short) (f.Random.Bool(0.1f) ? 1 : 0)) .RuleFor(v => v.Pos, f => f.PickRandom("noun", "adj", "verb")) .RuleFor(w => w.Note, f => f.Random.Bool(0.25f)? f.Lorem.Sentence() : null) .RuleFor(w => w.Variants, GetVariantForms(1, 3)) .Generate(); form.Lid = form.Lemma.ToUpperInvariant(); part.Forms.Add(form); } return(part); }
public void GetDataPins_NoEntries_Ok() { WordFormsPart part = GetPart(); part.Forms.Clear(); List <DataPin> pins = part.GetDataPins(null).ToList(); Assert.Single(pins); DataPin pin = pins[0]; Assert.Equal("tot-count", pin.Name); TestHelper.AssertPinIds(part, pin); Assert.Equal("0", pin.Value); }
public void Part_Is_Serializable() { WordFormsPart part = GetPart(); string json = TestHelper.SerializePart(part); WordFormsPart part2 = TestHelper.DeserializePart <WordFormsPart>(json); Assert.Equal(part.Id, part2.Id); Assert.Equal(part.TypeId, part2.TypeId); Assert.Equal(part.ItemId, part2.ItemId); Assert.Equal(part.RoleId, part2.RoleId); Assert.Equal(part.CreatorId, part2.CreatorId); Assert.Equal(part.UserId, part2.UserId); Assert.Equal(part.Forms.Count, part2.Forms.Count); }
public void Seed_Ok() { WordFormsPartSeeder seeder = new WordFormsPartSeeder(); seeder.SetSeedOptions(_seedOptions); IPart part = seeder.GetPart(_item, null, _factory); Assert.NotNull(part); WordFormsPart p = part as WordFormsPart; Assert.NotNull(p); TestHelper.AssertPartMetadata(p); Assert.NotEmpty(p.Forms); }
public void GetDataPins_Entries_Ok() { WordFormsPart part = GetEmptyPart(); for (int n = 1; n <= 3; n++) { // La Lb Lc var form = new WordForm { Lemma = "L" + new string((char)('a' + n - 1), 1), Pos = n % 2 == 0? "even" : "odd" }; // LA LB LC form.Lid = form.Lemma.ToUpperInvariant(); if (n == 2) { form.Variants.Add(new VariantForm { Value = "Váriant" }); } part.Forms.Add(form); } List <DataPin> pins = part.GetDataPins(null).ToList(); Assert.Equal(14, pins.Count); DataPin pin = pins.Find(p => p.Name == "tot-count"); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); Assert.Equal("3", pin.Value); pin = pins.Find(p => p.Name == "pos" && p.Value == "odd"); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); pin = pins.Find(p => p.Name == "pos" && p.Value == "even"); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); pin = pins.Find(p => p.Name == "variant" && p.Value == "variant"); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); pin = pins.Find(p => p.Name == "u-variant" && p.Value == "Váriant"); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); for (char c = 'a'; c <= 'c'; c++) { char uc = char.ToUpper(c); pin = pins.Find(p => p.Name == "lid" && p.Value == $"L{uc}"); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); pin = pins.Find(p => p.Name == "lemma" && p.Value == $"l{c}"); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); pin = pins.Find(p => p.Name == "u-lemma" && p.Value == $"L{c}"); Assert.NotNull(pin); TestHelper.AssertPinIds(part, pin); } }