public void RoundTripSpecials() { UndoMgr undomgr = new UndoMgr(5); EventDB eventDB = new EventDB(undomgr); Special sp1, sp2, sp3, sp4, sp5, sp6, sp7, sp8, sp9, sp10, sp11, sp12, sp13, sp14; undomgr.BeginCommand(88, "Command1"); sp1 = new Special(SpecialKind.FirstAid, new PointF[1] { new PointF(4.5F, 1.2F) }); sp2 = new Special(SpecialKind.OptCrossing, new PointF[1] { new PointF(-4.2F, 1.7F) }); sp2.allCourses = false; sp2.courses = new CourseDesignator[] { Designator(1), Designator(2), Designator(3), CourseDesignator.AllControls }; sp2.orientation = 45F; sp3 = new Special(SpecialKind.Boundary, new PointF[2] { new PointF(8, 7), new PointF(1, 2) }); sp4 = new Special(SpecialKind.OOB, new PointF[4] { new PointF(3, 7), new PointF(11, 2), new PointF(0, -1), new PointF(-12, -3) }); sp5 = new Special(SpecialKind.Text, new PointF[2] { new PointF(3, 7), new PointF(11, 4) }); sp5.text = "Hello"; sp5.fontName = "Tahoma"; sp5.fontBold = true; sp5.fontItalic = false; sp5.fontHeight = 6.5F; sp5.allCourses = false; sp5.color = new SpecialColor(0.2F, 0.5F, 0.3F, 0F); sp5.courses = new CourseDesignator[2] { Designator(2), new CourseDesignator(CourseId(3), 1) }; sp6 = new Special(SpecialKind.Descriptions, new PointF[2] { new PointF(5, 6), new PointF(11, 6) }); sp6.numColumns = 2; sp7 = new Special(SpecialKind.Text, new PointF[2] { new PointF(8, 7), new PointF(18, 5) }); sp7.fontName = "Courier New"; sp7.fontBold = false; sp7.fontItalic = true; sp7.text = "$(CourseName)"; sp7.color = SpecialColor.Purple; sp8 = new Special(SpecialKind.WhiteOut, new PointF[4] { new PointF(13, 17), new PointF(21, 12), new PointF(10, -1), new PointF(-2, 7) }); sp9 = new Special(SpecialKind.Image, new PointF[2] { new PointF(18, 17), new PointF(28, 15) }); sp9.imageBitmap = (Bitmap)Image.FromFile(TestUtil.GetTestFile("eventDB\\testimage.jpg")); sp9.text = "testimage.jpg"; sp10 = new Special(SpecialKind.Line, new PointF[3] { new PointF(8, 7), new PointF(1, 2), new PointF(5, 12) }); sp10.color = SpecialColor.Black; sp10.lineKind = LineKind.Single; sp10.lineWidth = 0.1F; sp11 = new Special(SpecialKind.Line, new PointF[3] { new PointF(8, 7), new PointF(1, 2), new PointF(5, 12) }); sp11.color = new SpecialColor(1F, 0.66F, 0.45F, 0.83F); sp11.lineKind = LineKind.Double; sp11.lineWidth = 0.1F; sp11.gapSize = 0.15F; sp12 = new Special(SpecialKind.Line, new PointF[2] { new PointF(8, 7), new PointF(1, 2) }); sp12.color = SpecialColor.Purple; sp12.lineKind = LineKind.Dashed; sp12.lineWidth = 0.1F; sp12.gapSize = 0.15F; sp12.dashSize = 0.44F; sp13 = new Special(SpecialKind.Rectangle, new PointF[2] { new PointF(8, 7), new PointF(1, 2) }); sp13.color = SpecialColor.Purple; sp13.lineKind = LineKind.Single; sp13.lineWidth = 0.1F; sp13.cornerRadius = 0.23F; sp14 = new Special(SpecialKind.Ellipse, new PointF[2] { new PointF(5, 6), new PointF(1, 3) }); sp14.color = new SpecialColor(CmykColor.FromCmyk(0.8F, 0.3F, 0.2F, 0.1F)); sp14.lineKind = LineKind.Double; sp14.lineWidth = 0.25F; eventDB.AddSpecial(sp1); eventDB.AddSpecial(sp2); eventDB.AddSpecial(sp3); eventDB.AddSpecial(sp4); eventDB.AddSpecial(sp5); eventDB.AddSpecial(sp6); eventDB.AddSpecial(sp7); eventDB.AddSpecial(sp8); eventDB.AddSpecial(sp9); eventDB.AddSpecial(sp10); eventDB.AddSpecial(sp11); eventDB.AddSpecial(sp12); eventDB.AddSpecial(sp13); eventDB.AddSpecial(sp14); undomgr.EndCommand(88); eventDB.Save(TestUtil.GetTestFile("eventDB\\testoutput_temp.xml")); undomgr.Clear(); eventDB = new EventDB(undomgr); eventDB.Load(TestUtil.GetTestFile("eventdb\\testoutput_temp.xml")); // The loaded image won't compare equal. Check the image is the same, then force equal. Special loadedSp9 = eventDB.GetSpecial(SpecialId(9)); Assert.IsNotNull(loadedSp9.imageBitmap); Assert.AreEqual(loadedSp9.imageBitmap.Width, sp9.imageBitmap.Width); Assert.AreEqual(loadedSp9.imageBitmap.Height, sp9.imageBitmap.Height); Assert.AreEqual(loadedSp9.imageBitmap.RawFormat, sp9.imageBitmap.RawFormat); loadedSp9.imageBitmap = sp9.imageBitmap; TestUtil.TestEnumerableAnyOrder(eventDB.AllSpecialPairs, new KeyValuePair <Id <Special>, Special>[] { new KeyValuePair <Id <Special>, Special>(SpecialId(1), sp1), new KeyValuePair <Id <Special>, Special>(SpecialId(2), sp2), new KeyValuePair <Id <Special>, Special>(SpecialId(3), sp3), new KeyValuePair <Id <Special>, Special>(SpecialId(4), sp4), new KeyValuePair <Id <Special>, Special>(SpecialId(5), sp5), new KeyValuePair <Id <Special>, Special>(SpecialId(6), sp6), new KeyValuePair <Id <Special>, Special>(SpecialId(7), sp7), new KeyValuePair <Id <Special>, Special>(SpecialId(8), sp8), new KeyValuePair <Id <Special>, Special>(SpecialId(9), sp9), new KeyValuePair <Id <Special>, Special>(SpecialId(10), sp10), new KeyValuePair <Id <Special>, Special>(SpecialId(11), sp11), new KeyValuePair <Id <Special>, Special>(SpecialId(12), sp12), new KeyValuePair <Id <Special>, Special>(SpecialId(13), sp13), new KeyValuePair <Id <Special>, Special>(SpecialId(14), sp14), } ); }
public void RoundTripSpecials() { UndoMgr undomgr = new UndoMgr(5); EventDB eventDB = new EventDB(undomgr); Special sp1, sp2, sp3, sp4, sp5, sp6, sp7, sp8, sp9, sp10, sp11, sp12, sp13; undomgr.BeginCommand(88, "Command1"); sp1 = new Special(SpecialKind.FirstAid, new PointF[1] { new PointF(4.5F, 1.2F) }); sp2 = new Special(SpecialKind.OptCrossing, new PointF[1] { new PointF(-4.2F, 1.7F) }); sp2.allCourses = false; sp2.courses = new CourseDesignator[] { Designator(1), Designator(2), Designator(3), CourseDesignator.AllControls }; sp2.orientation = 45F; sp3 = new Special(SpecialKind.Boundary, new PointF[2] { new PointF(8, 7), new PointF(1, 2) }); sp4 = new Special(SpecialKind.OOB, new PointF[4] { new PointF(3, 7), new PointF(11, 2), new PointF(0, -1), new PointF(-12, -3) }); sp5 = new Special(SpecialKind.Text, new PointF[2] { new PointF(3, 7), new PointF(11, 4) }); sp5.text = "Hello"; sp5.fontName = "Tahoma"; sp5.fontBold = true; sp5.fontItalic = false; sp5.allCourses = false; sp5.color = new SpecialColor(0.2F, 0.5F, 0.3F, 0F); sp5.courses = new CourseDesignator[2] { Designator(2), new CourseDesignator(CourseId(3), 1) }; sp6 = new Special(SpecialKind.Descriptions, new PointF[2] { new PointF(5, 6), new PointF(11, 6) }); sp6.numColumns = 2; sp7 = new Special(SpecialKind.Text, new PointF[2] { new PointF(8, 7), new PointF(18, 5) }); sp7.fontName = "Courier New"; sp7.fontBold = false; sp7.fontItalic = true; sp7.text = "$(CourseName)"; sp7.color = SpecialColor.Purple; sp8 = new Special(SpecialKind.WhiteOut, new PointF[4] { new PointF(13, 17), new PointF(21, 12), new PointF(10, -1), new PointF(-2, 7) }); sp9 = new Special(SpecialKind.Image, new PointF[2] { new PointF(18, 17), new PointF(28, 15) }); sp9.imageBitmap = (Bitmap)Image.FromFile(TestUtil.GetTestFile("eventDB\\testimage.jpg")); sp9.text = "testimage.jpg"; sp10 = new Special(SpecialKind.Line, new PointF[3] { new PointF(8, 7), new PointF(1, 2), new PointF(5, 12) }); sp10.color = SpecialColor.Black; sp10.lineKind = LineKind.Single; sp10.lineWidth = 0.1F; sp11 = new Special(SpecialKind.Line, new PointF[3] { new PointF(8, 7), new PointF(1, 2), new PointF(5, 12) }); sp11.color = new SpecialColor(1F, 0.66F, 0.45F, 0.83F); sp11.lineKind = LineKind.Double; sp11.lineWidth = 0.1F; sp11.gapSize = 0.15F; sp12 = new Special(SpecialKind.Line, new PointF[2] { new PointF(8, 7), new PointF(1, 2) }); sp12.color = SpecialColor.Purple; sp12.lineKind = LineKind.Dashed; sp12.lineWidth = 0.1F; sp12.gapSize = 0.15F; sp12.dashSize = 0.44F; sp13 = new Special(SpecialKind.Rectangle, new PointF[2] { new PointF(8, 7), new PointF(1, 2) }); sp13.color = SpecialColor.Purple; sp13.lineKind = LineKind.Single; sp13.lineWidth = 0.1F; sp13.cornerRadius = 0.23F; eventDB.AddSpecial(sp1); eventDB.AddSpecial(sp2); eventDB.AddSpecial(sp3); eventDB.AddSpecial(sp4); eventDB.AddSpecial(sp5); eventDB.AddSpecial(sp6); eventDB.AddSpecial(sp7); eventDB.AddSpecial(sp8); eventDB.AddSpecial(sp9); eventDB.AddSpecial(sp10); eventDB.AddSpecial(sp11); eventDB.AddSpecial(sp12); eventDB.AddSpecial(sp13); undomgr.EndCommand(88); eventDB.Save(TestUtil.GetTestFile("eventDB\\testoutput_temp.xml")); undomgr.Clear(); eventDB = new EventDB(undomgr); eventDB.Load(TestUtil.GetTestFile("eventdb\\testoutput_temp.xml")); // The loaded image won't compare equal. Check the image is the same, then force equal. Special loadedSp9 = eventDB.GetSpecial(SpecialId(9)); Assert.IsNotNull(loadedSp9.imageBitmap); Assert.AreEqual(loadedSp9.imageBitmap.Width, sp9.imageBitmap.Width); Assert.AreEqual(loadedSp9.imageBitmap.Height, sp9.imageBitmap.Height); Assert.AreEqual(loadedSp9.imageBitmap.RawFormat, sp9.imageBitmap.RawFormat); loadedSp9.imageBitmap = sp9.imageBitmap; TestUtil.TestEnumerableAnyOrder(eventDB.AllSpecialPairs, new KeyValuePair<Id<Special>, Special>[] { new KeyValuePair<Id<Special>,Special>(SpecialId(1), sp1), new KeyValuePair<Id<Special>,Special>(SpecialId(2), sp2), new KeyValuePair<Id<Special>,Special>(SpecialId(3), sp3), new KeyValuePair<Id<Special>,Special>(SpecialId(4), sp4), new KeyValuePair<Id<Special>,Special>(SpecialId(5), sp5), new KeyValuePair<Id<Special>,Special>(SpecialId(6), sp6), new KeyValuePair<Id<Special>,Special>(SpecialId(7), sp7), new KeyValuePair<Id<Special>,Special>(SpecialId(8), sp8), new KeyValuePair<Id<Special>,Special>(SpecialId(9), sp9), new KeyValuePair<Id<Special>,Special>(SpecialId(10), sp10), new KeyValuePair<Id<Special>,Special>(SpecialId(11), sp11), new KeyValuePair<Id<Special>,Special>(SpecialId(12), sp12), new KeyValuePair<Id<Special>,Special>(SpecialId(13), sp13), } ); }