1 #include<test_HYDROData_Image.h>
3 #include <HYDROData_Document.h>
4 #include <HYDROData_Image.h>
7 static QImage TestImage() {
8 QImage aPic(50, 40, QImage::Format_RGB32);
9 QPainter aPainter(&aPic);
10 aPainter.drawEllipse(6, 7, 38, 30);
11 aPainter.drawLine(0, 40, 10, 0);
12 aPainter.drawLine(10, 0, 25, 35);
13 aPainter.drawLine(25, 35, 40, 0);
14 aPainter.drawLine(40, 0, 50, 40);
18 void test_HYDROData_Image::testQImage()
20 Handle(HYDROData_Document) aDoc = HYDROData_Document::Document(1);
22 Handle(HYDROData_Image) anImage =
23 Handle(HYDROData_Image)::DownCast(aDoc->CreateObject(KIND_IMAGE));
25 QImage anEmpty = anImage->Image();
26 CPPUNIT_ASSERT(anEmpty.isNull());
28 // prepare Qt Image for testing
29 QImage aPic(TestImage());
30 anImage->SetImage(aPic);
31 QImage aRestored = anImage->Image();
33 CPPUNIT_ASSERT(!aRestored.isNull());
34 //aRestored.save("pic2.bmp");
35 CPPUNIT_ASSERT(aPic == aRestored);
40 void test_HYDROData_Image::testTrsf()
42 Handle(HYDROData_Document) aDoc = HYDROData_Document::Document(1);
44 Handle(HYDROData_Image) anImage =
45 Handle(HYDROData_Image)::DownCast(aDoc->CreateObject(KIND_IMAGE));
47 QTransform anEmpty = anImage->Trsf();
48 CPPUNIT_ASSERT(anEmpty.isIdentity());
50 // prepare Qt transformation for testing
52 aTrsf.translate(50, 50);
54 aTrsf.scale(0.5, 1.0);
56 anImage->SetTrsf(aTrsf);
57 QTransform aRestored = anImage->Trsf();
59 CPPUNIT_ASSERT(!aRestored.isIdentity());
60 CPPUNIT_ASSERT(aTrsf == aRestored);
65 void test_HYDROData_Image::testReferences()
67 Handle(HYDROData_Document) aDoc = HYDROData_Document::Document(1);
69 Handle(HYDROData_Image) anImage1 =
70 Handle(HYDROData_Image)::DownCast(aDoc->CreateObject(KIND_IMAGE));
71 Handle(HYDROData_Image) anImage2 =
72 Handle(HYDROData_Image)::DownCast(aDoc->CreateObject(KIND_IMAGE));
73 Handle(HYDROData_Image) anImage3 =
74 Handle(HYDROData_Image)::DownCast(aDoc->CreateObject(KIND_IMAGE));
76 CPPUNIT_ASSERT(anImage1->ID() != anImage2->ID());
77 CPPUNIT_ASSERT(anImage2->ID() != anImage3->ID());
79 // check initially there is no references
80 CPPUNIT_ASSERT_EQUAL(anImage3->NbReferences(), 0);
83 anImage3->AppendReference(anImage1);
84 CPPUNIT_ASSERT_EQUAL(anImage3->NbReferences(), 1);
85 CPPUNIT_ASSERT(IsEqual(anImage3->Reference(0), anImage1));
88 anImage3->ChangeReference(0, anImage2);
89 CPPUNIT_ASSERT_EQUAL(anImage3->NbReferences(), 1);
90 CPPUNIT_ASSERT(IsEqual(anImage3->Reference(0), anImage2));
92 // append one more reference
93 anImage3->AppendReference(anImage1);
94 CPPUNIT_ASSERT_EQUAL(anImage3->NbReferences(), 2);
95 CPPUNIT_ASSERT(IsEqual(anImage3->Reference(0), anImage2));
96 CPPUNIT_ASSERT(IsEqual(anImage3->Reference(1), anImage1));
99 anImage3->RemoveReference(0);
100 CPPUNIT_ASSERT_EQUAL(anImage3->NbReferences(), 1);
101 CPPUNIT_ASSERT(IsEqual(anImage3->Reference(0), anImage1));
104 anImage3->RemoveReference(0);
105 CPPUNIT_ASSERT_EQUAL(anImage3->NbReferences(), 0);
107 // append two references once again and remove all references
108 anImage3->ChangeReference(0, anImage1);
109 anImage3->ChangeReference(1, anImage2);
110 CPPUNIT_ASSERT_EQUAL(anImage3->NbReferences(), 2);
111 CPPUNIT_ASSERT(IsEqual(anImage3->Reference(0), anImage1));
112 CPPUNIT_ASSERT(IsEqual(anImage3->Reference(1), anImage2));
113 anImage3->ClearReferences();
114 CPPUNIT_ASSERT_EQUAL(anImage3->NbReferences(), 0);
119 void test_HYDROData_Image::testCopy()
121 Handle(HYDROData_Document) aDoc = HYDROData_Document::Document(1);
123 Handle(HYDROData_Image) anImage1 =
124 Handle(HYDROData_Image)::DownCast(aDoc->CreateObject(KIND_IMAGE));
126 anImage1->SetImage(TestImage());
129 aTrsf.translate(50, 50);
131 aTrsf.scale(0.5, 1.0);
132 anImage1->SetTrsf(aTrsf);
134 Handle(HYDROData_Image) anImage2 =
135 Handle(HYDROData_Image)::DownCast(aDoc->CreateObject(KIND_IMAGE));
137 anImage1->AppendReference(anImage2);
139 // copy image to the new one
140 Handle(HYDROData_Image) anImage3 =
141 Handle(HYDROData_Image)::DownCast(aDoc->CreateObject(KIND_IMAGE));
142 anImage1->CopyTo(anImage3);
144 // check all fields are correctly copied
145 CPPUNIT_ASSERT(anImage1->Image() == anImage3->Image());
146 CPPUNIT_ASSERT(anImage1->Trsf() == anImage3->Trsf());
147 CPPUNIT_ASSERT_EQUAL(anImage3->NbReferences(), 1);
148 CPPUNIT_ASSERT(IsEqual(anImage3->Reference(0), anImage2));