MCPcopy Create free account
hub / github.com/OpenApoc/OpenApoc / testImage

Function testImage

tests/test_images.cpp:10–66  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

8using namespace OpenApoc;
9
10static bool testImage(const UString &imageName, const UString &referenceName)
11{
12 auto img = fw().data->loadImage(imageName);
13 auto reference = fw().data->loadImage(referenceName);
14 if (!img)
15 {
16 LogWarning("Failed to load image");
17 return false;
18 }
19 if (!reference)
20 {
21 LogWarning("Failed to load reference");
22 return false;
23 }
24
25 auto rgbImg = std::dynamic_pointer_cast<RGBImage>(img);
26 if (!rgbImg)
27 {
28 LogWarning("Image not RGBImage");
29 return false;
30 }
31
32 auto rgbReference = std::dynamic_pointer_cast<RGBImage>(reference);
33 if (!rgbReference)
34 {
35 LogWarning("Reference not RGB image");
36 return false;
37 }
38
39 if (img->size != reference->size)
40 {
41 LogWarning("Invalid size, %s doesn't match reference %s", img->size, reference->size);
42 return false;
43 }
44
45 RGBImageLock imgLock(rgbImg, ImageLockUse::Read);
46 RGBImageLock refLock(rgbReference, ImageLockUse::Read);
47
48 for (unsigned int y = 0; y < img->size.y; y++)
49 {
50 for (unsigned int x = 0; x < img->size.x; x++)
51 {
52 auto i = imgLock.get({x, y});
53 auto r = refLock.get({x, y});
54 if (i != r)
55 {
56 LogWarning(
57 "Image mismatch at {%d,%d} (RGBA img {%d,%d,%d,%d} != RGBA ref {%d,%d,%d,%d}",
58 x, y, (int)i.r, (int)i.g, (int)i.b, (int)i.a, (int)r.r, (int)r.g, (int)r.b,
59 (int)r.a);
60
61 return false;
62 }
63 }
64 }
65 return true;
66}
67

Callers 1

mainFunction · 0.85

Calls 2

loadImageMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected