Espruino/tests/test_graphics_fillPoly.js
2020-05-31 21:41:05 -04:00

363 lines
11 KiB
JavaScript

var g = Graphics.createArrayBuffer(32,32,8);
g.dump = _=>{
var s = "";
var b = new Uint8Array(g.buffer);
var n = 0;
for (var y=0;y<g.getHeight();y++) {
s+="\n";
for (var x=0;x<g.getWidth();x++)
s+=".#XO+"[b[n++]];
}
return s;
}
g.print = _=>{
print("`"+g.dump()+"`");
}
var ok = true;
function SHOULD_BE(a) {
var b = g.dump();
if (a!=b) {
console.log("GOT :"+b+"\nSHOULD BE:"+a+"\n================");
ok = false;
}
}
g.clear();
g.setColor(1);
g.fillPoly([ 16, 0, 31, 31, 26, 31, 16, 12, 6, 28, 0, 27 ]);
SHOULD_BE(`
................................
...............##...............
...............##...............
..............####..............
.............#####..............
.............######.............
............#######.............
............########............
...........#########............
..........###########...........
..........###########...........
.........#############..........
.........#############..........
........#######..######.........
.......#######...######.........
.......#######....#####.........
......#######.....######........
......#######......#####........
.....#######.......######.......
....#######.........#####.......
....#######.........######......
...#######...........#####......
...######............######.....
..#######.............#####.....
.#######...............#####....
.#######...............#####....
#######.................#####...
...###..................#####...
.........................#####..
.........................#####..
..........................#####.
................................`);
g.clear();
g.setColor(1);
g.fillPoly([16,2, 30,16, 16,30, 2,16]);
SHOULD_BE(`
................................
................................
...............#................
..............###...............
.............#####..............
............#######.............
...........#########............
..........###########...........
.........#############..........
........###############.........
.......#################........
......###################.......
.....#####################......
....#######################.....
...#########################....
..###########################...
..###########################...
...#########################....
....#######################.....
.....#####################......
......###################.......
.......#################........
........###############.........
.........#############..........
..........###########...........
...........#########............
............#######.............
.............#####..............
..............###...............
...............#................
................................
................................`);
g.clear();
g.setColor(1);
g.fillPoly([16,2, 30,12, 16,30, 2,20]);
SHOULD_BE(`
................................
................................
................#...............
...............###..............
..............#####.............
.............########...........
............##########..........
............############........
...........##############.......
..........################......
.........###################....
.........####################...
........######################..
.......######################...
......######################....
.....######################.....
.....#####################......
....######################......
...######################.......
..######################........
...####################.........
....###################.........
.....#################..........
.......##############...........
........############............
..........#########.............
...........########.............
............######..............
..............###...............
...............#................
................................
................................`);
g.clear();
g.setColor(1);
g.fillPoly([4,4, 27,4, 27,27, 4,27]);
SHOULD_BE(`
................................
................................
................................
................................
....#######################.....
....#######################.....
....#######################.....
....#######################.....
....#######################.....
....#######################.....
....#######################.....
....#######################.....
....#######################.....
....#######################.....
....#######################.....
....#######################.....
....#######################.....
....#######################.....
....#######################.....
....#######################.....
....#######################.....
....#######################.....
....#######################.....
....#######################.....
....#######################.....
....#######################.....
....#######################.....
................................
................................
................................
................................
................................`);
g.clear();
g.setFont("Vector",32);
g.setColor(1);
g.drawString("X");
SHOULD_BE(`
...#####................#####...
....#####..............#####....
....######............######....
.....#####............#####.....
......#####..........#####......
......######........######......
.......#####........#####.......
........#####......#####........
........######....######........
.........#####....#####.........
..........#####..#####..........
..........############..........
...........##########...........
............########............
............########............
.............######.............
.............######.............
............########............
............########............
...........##########...........
..........############..........
..........#####..#####..........
.........#####....#####.........
........######....######........
........#####......#####........
.......#####........#####.......
......######........######......
......#####..........#####......
.....#####............#####.....
....######............######....
....#####..............#####....
...#####................#####...`);
g.clear();
g.setColor(1);
g.fillPoly([ 12, 0, 18, 0, 18, 15, 30, 24, 27, 30, 18, 24, 18, 36, 12, 36, 12, 24, 3, 30, 0, 24, 12, 15, 12, 0 ]);
SHOULD_BE(`
............######..............
............######..............
............######..............
............######..............
............######..............
............######..............
............######..............
............######..............
............######..............
............######..............
............######..............
............######..............
............######..............
............######..............
............######..............
...........########.............
..........##########............
.........############...........
.......################.........
......##################........
.....####################.......
...########################.....
..##########################....
.############################...
###########.######.###########..
.#########..######..#########...
.#######....######....#######...
..#####.....######.....#####....
..###.......######.......###....
...#........######........#.....
............######..............
............######..............`);
g.clear();
g.setColor(1).fillPoly([16,2, 30,16, 16,30, 2,16]);
g.setColor(2).drawPoly([16,2, 30,16, 16,30, 2,16, 16,2]);
SHOULD_BE(`
................................
................................
...............#X...............
..............#X#X..............
.............#X###X.............
............#X#####X............
...........#X#######X...........
..........#X#########X..........
.........#X###########X.........
........#X#############X........
.......#X###############X.......
......#X#################X......
.....#X###################X.....
....#X#####################X....
...#X#######################X...
..#X#########################X..
..X##########################.X.
...X########################.X..
....X######################.X...
.....X####################.X....
......X##################.X.....
.......X################.X......
........X##############.X.......
.........X############.X........
..........X##########.X.........
...........X########.X..........
............X######.X...........
.............X####.X............
..............X##.X.............
...............X.X..............
................X...............
................................`);
g.clear();
g.setColor(1).fillPoly([16,2, 30,12, 16,30, 2,20]);
g.setColor(2).drawPoly([16,2, 30,12, 16,30, 2,20, 16,2]);
SHOULD_BE(`
................................
................................
................X...............
...............X#XX.............
..............X####X............
.............#X#####X...........
............#X#######XX.........
............X##########X........
...........X############XX......
..........#X##############X.....
.........#X################X....
.........X##################XX..
........X#####################X.
.......X#####################X..
......#X####################X...
.....#X####################.X...
.....X####################.X....
....X#####################X.....
...#X####################X......
..#X####################.X......
..X####################.X.......
...XX##################X........
.....X################X.........
......X##############X..........
.......XX###########.X..........
.........X#########.X...........
..........XX#######X............
............X#####X.............
.............X###.X.............
..............XX.X..............
................X...............
................................`);
g.clear();
g.setColor(1).fillPoly([1.5,1.5, 15.5,2.5, 16.5,16.5, 2.5,15.5]);
g.setColor(2).fillPoly([15.5,2.5, 29.5,3.5, 30.5,17.5, 16.5,16.5]);
g.setColor(3).fillPoly([2.5,15.5, 16.5,16.5, 17.5,30.5, 3.5,29.5]);
g.setColor(4).fillPoly([16.5,16.5, 30.5,17.5, 31.5,31.5, 17.5,30.5]);
SHOULD_BE(`
................................
................................
..#############.................
..##############XXXXXXXXXXXXX...
..##############XXXXXXXXXXXXXX..
..##############XXXXXXXXXXXXXX..
..##############XXXXXXXXXXXXXX..
..##############XXXXXXXXXXXXXX..
..##############XXXXXXXXXXXXXX..
..##############XXXXXXXXXXXXXX..
..##############XXXXXXXXXXXXXX..
..##############XXXXXXXXXXXXXX..
..##############XXXXXXXXXXXXXX..
..##############XXXXXXXXXXXXXX..
..##############XXXXXXXXXXXXXX..
..##############XXXXXXXXXXXXXX..
...OOOOOOOOOOOOOXXXXXXXXXXXXXX..
...OOOOOOOOOOOOOO+++++++++++++..
...OOOOOOOOOOOOOO++++++++++++++.
...OOOOOOOOOOOOOO++++++++++++++.
...OOOOOOOOOOOOOO++++++++++++++.
...OOOOOOOOOOOOOO++++++++++++++.
...OOOOOOOOOOOOOO++++++++++++++.
...OOOOOOOOOOOOOO++++++++++++++.
...OOOOOOOOOOOOOO++++++++++++++.
...OOOOOOOOOOOOOO++++++++++++++.
...OOOOOOOOOOOOOO++++++++++++++.
...OOOOOOOOOOOOOO++++++++++++++.
...OOOOOOOOOOOOOO++++++++++++++.
...OOOOOOOOOOOOOO++++++++++++++.
.................++++++++++++++.
................................`);
result = ok;