aboutsummaryrefslogtreecommitdiff
path: root/Unicorn_test.go
blob: 4b06a73717e2269744b48a0a3983ae3da8c47590 (plain)
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package main

import (
	"reflect"
	"testing"
	"time"
)

func TestGetUnicorn(t *testing.T) {

}

func TestFakeUnicorn(t *testing.T) {
	unicorn, err := NewFake(uint8(16), uint8(16))
	if err != nil {
		t.Errorf("Got an error making a fake unicorn, shouldn't happen")
	}
	defer unicorn.Close()

	// Check simple functions
	if unicorn.GetHeight() != 16 {
		t.Errorf("Height was wrong, expecting 16")
	}
	if unicorn.GetWidth() != 16 {
		t.Errorf("Width was wrong, expecting 16")
	}
	// Pixels should be black to start with
	pixels := unicorn.GetPixels()
	for x := uint8(0); x < 16; x++ {
		for y := uint8(0); y < 16; y++ {
			if !reflect.DeepEqual(pixels[x][y], []uint8{0, 0, 0}) {
				t.Errorf("Expecting black pixels to start with")
			}
		}
	}

	// Should be able to set a pixel, no others should change
	unicorn.SetPixel(0, 0, uint8(255), uint8(255), uint8(255))
	pixels = unicorn.GetPixels()
	if !reflect.DeepEqual(pixels[0][0], []uint8{255, 255, 255}) {
		t.Errorf("Pixel wasn't set when it should be")
	}
	for x := uint8(0); x < 16; x++ {
		for y := uint8(0); y < 16; y++ {
			if x == 0 && y == 0 {
				continue
			}
			if !reflect.DeepEqual(pixels[x][y], []uint8{0, 0, 0}) {
				t.Errorf("Expecting black pixels to start with")
			}
		}
	}

	// Should be able to set a second pixel
	unicorn.SetPixel(3, 4, uint8(4), uint8(5), uint8(6))
	pixels = unicorn.GetPixels()
	for x := uint8(0); x < 16; x++ {
		for y := uint8(0); y < 16; y++ {
			checkcolor := []uint8{0, 0, 0}
			if x == 0 && y == 0 {
				checkcolor = []uint8{255, 255, 255}
			} else if x == 3 && y == 4 {
				checkcolor = []uint8{4, 5, 6}
			}
			if !reflect.DeepEqual(pixels[x][y], checkcolor) {
				t.Errorf("Got incorrect pixel color at %d %d", x, y)
			}
		}
	}

	unicorn.Show()
	time.Sleep(time.Duration(500) * time.Millisecond)
	unicorn.SetPixel(10, 10, uint8(255), uint8(255), uint8(0))
	unicorn.Show()
	time.Sleep(time.Duration(500) * time.Millisecond)

	unicorn.SetPixel(0, 15, uint8(255), uint8(0), uint8(0))
	unicorn.Show()
	time.Sleep(time.Duration(500) * time.Millisecond)
}