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
                                                           ());
                }
            }
        }
Esempio n. 2
0
        /// <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);
        }