-
-
Notifications
You must be signed in to change notification settings - Fork 150
/
Copy pathscreen.colorAt.spec.ts
44 lines (40 loc) · 1.81 KB
/
screen.colorAt.spec.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import {Image, loadImage, Point, Region, RGBA, ScreenClass, ScreenProviderInterface} from "../index";
import {mockPartial} from "sneer";
import providerRegistry, {ProviderRegistry} from "./provider/provider-registry.class";
import {ImageProcessor} from "./provider/image-processor.interface";
const searchRegion = new Region(0, 0, 1000, 1000);
const providerRegistryMock = mockPartial<ProviderRegistry>({
getScreen(): ScreenProviderInterface {
return mockPartial<ScreenProviderInterface>({
grabScreenRegion(): Promise<Image> {
return Promise.resolve(new Image(searchRegion.width, searchRegion.height, new ArrayBuffer(0), 3, "needle_image"));
},
screenSize(): Promise<Region> {
return Promise.resolve(searchRegion);
}
})
},
getImageProcessor(): ImageProcessor {
return providerRegistry.getImageProcessor();
}
});
describe("colorAt", () => {
it("should return the correct RGBA value for a given pixel", async () => {
// GIVEN
const screenshot = loadImage(`${__dirname}/../e2e/assets/checkers.png`);
const grabScreenMock = jest.fn(() => Promise.resolve(screenshot));
providerRegistryMock.getScreen = jest.fn(() => mockPartial<ScreenProviderInterface>({
grabScreen: grabScreenMock
}));
providerRegistryMock.getImageProcessor()
const SUT = new ScreenClass(providerRegistryMock);
const expectedWhite = new RGBA(255, 255, 255, 255);
const expectedBlack = new RGBA(0, 0, 0, 255);
// WHEN
const white = await SUT.colorAt(new Point(64, 64));
const black = await SUT.colorAt(new Point(192, 64));
// THEN
expect(white).toStrictEqual(expectedWhite);
expect(black).toStrictEqual(expectedBlack);
});
});