public virtual void HashCodeTest() { PdfIndirectReference firstReference = new PdfIndirectReference(null, 41, 7); PdfIndirectReference secondReference = new PdfIndirectReference(null, 41, 7); NUnit.Framework.Assert.AreNotSame(firstReference, secondReference); NUnit.Framework.Assert.AreEqual(firstReference.GetHashCode(), secondReference.GetHashCode()); NUnit.Framework.Assert.AreNotEqual(firstReference.GetHashCode(), new PdfIndirectReference(null, 42, 7).GetHashCode ()); NUnit.Framework.Assert.AreNotEqual(firstReference.GetHashCode(), new PdfIndirectReference(null, 41, 5).GetHashCode ()); using (PdfDocument firstDoc = new PdfDocument(new PdfWriter(new MemoryStream()))) { using (PdfDocument secondDoc = new PdfDocument(new PdfWriter(new MemoryStream()))) { // add a page to avoid exception throwing on close firstDoc.AddNewPage(); secondDoc.AddNewPage(); PdfIndirectReference obj41Gen0 = new PdfIndirectReference(firstDoc, 41, 0); NUnit.Framework.Assert.AreEqual(obj41Gen0.GetHashCode(), new PdfIndirectReference(firstDoc, 41, 0).GetHashCode ()); NUnit.Framework.Assert.AreNotEqual(obj41Gen0.GetHashCode(), new PdfIndirectReference(secondDoc, 41, 0).GetHashCode ()); NUnit.Framework.Assert.AreNotEqual(obj41Gen0.GetHashCode(), new PdfIndirectReference(null, 41, 0).GetHashCode ()); } } }
/// <summary>Calculates hash code for the indirect reference taking into account the document it belongs to.</summary> /// <param name="indRef">object to be hashed.</param> /// <returns>calculated hash code.</returns> protected internal static int CalculateIndRefKey(PdfIndirectReference indRef) { int result = indRef.GetHashCode(); result = 31 * result + indRef.GetDocument().GetHashCode(); return(result); }