public override IPalasoDataObjectProperty Clone() { var clone = new LexEtymology(Type, Source); clone.Gloss = (MultiText)Gloss.Clone(); clone.Comment = (MultiText)Comment.Clone(); clone.Traits = new List<LexTrait>(Traits.Select(t=>t.Clone())); clone.Fields = new List<LexField>(Fields.Select(f => (LexField)f.Clone())); //copies from MultiText clone.EmbeddedXmlElements = new List<string>(EmbeddedXmlElements); clone.Forms = Forms.Select(f => (LanguageForm) f.Clone()).ToArray(); return clone; }
public bool Equals(LexEtymology other) { if (ReferenceEquals(null, other)) return false; if (ReferenceEquals(this, other)) return true; if (!base.Equals(other)) return false; if (!Gloss.Equals(other.Gloss)) return false; if (!Comment.Equals(other.Comment)) return false; if (!Traits.SequenceEqual(other.Traits)) return false; //order matters because we expose a list interface if (!Fields.SequenceEqual(other.Fields)) return false; //order matters because we expose a list interface if (!Type.Equals(other.Type)) return false; if (!Source.Equals(other.Source)) return false; return true; }
public override IPalasoDataObjectProperty Clone() { var clone = new LexEtymology(Type, Source); clone.Gloss = (MultiText)Gloss.Clone(); clone.Comment = (MultiText)Comment.Clone(); clone.Traits = new List <LexTrait>(Traits.Select(t => t.Clone())); clone.Fields = new List <LexField>(Fields.Select(f => (LexField)f.Clone())); //copies from MultiText clone.EmbeddedXmlElements = new List <string>(EmbeddedXmlElements); clone.Forms = Forms.Select(f => (LanguageForm)f.Clone()).ToArray(); return(clone); }
public bool Equals(LexEtymology other) { if (ReferenceEquals(null, other)) { return(false); } if (ReferenceEquals(this, other)) { return(true); } if (!base.Equals(other)) { return(false); } if (!Gloss.Equals(other.Gloss)) { return(false); } if (!Comment.Equals(other.Comment)) { return(false); } if (!Traits.SequenceEqual(other.Traits)) { return(false); //order matters because we expose a list interface } if (!Fields.SequenceEqual(other.Fields)) { return(false); //order matters because we expose a list interface } if (!Type.Equals(other.Type)) { return(false); } if (!Source.Equals(other.Source)) { return(false); } return(true); }
public void EntryWithFullEtymology() { using (var session = new LiftExportAsFragmentTestSession()) { var e = session.CreateItem(); var etymology = new LexEtymology("theType", "theSource"); etymology.SetAlternative("etr", "theProtoform"); etymology.Gloss.SetAlternative("en", "engloss"); etymology.Gloss.SetAlternative("fr", "frgloss"); etymology.Comment.SetAlternative("en", "metathesis?"); e.Etymologies.Add(etymology); session.LiftWriter.Add(e); session.LiftWriter.End(); AssertHasOneMatch("entry/etymology/form[@lang='etr' and text='theProtoform']", session); AssertHasOneMatch("entry/etymology[@type='theType' and @source='theSource']", session); //handling of comments may change, the issue has been raised on the LIFT google group AssertHasOneMatch("entry/etymology/field[@type='comment']/form[@lang='en' and text='metathesis?']", session); } }
public void EntryWithSimpleEtymology() { using (var session = new LiftExportAsFragmentTestSession()) { var e = session.CreateItem(); var etymology = new LexEtymology("theType", "theSource"); etymology.SetAlternative("etr", "one"); e.Etymologies.Add(etymology); session.LiftWriter.Add(e); session.LiftWriter.End(); AssertHasOneMatch("entry/etymology/form[@lang='etr' and text='one']", session); AssertHasOneMatch("entry/etymology[@type='theType' and @source='theSource']", session); } }