예제 #1
0
        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),
            }
                                            );
        }
예제 #2
0
        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),
                }
            );
        }