From 32e997346bb5766aefa6ef5f4caa189af128b498 Mon Sep 17 00:00:00 2001 From: Martin Ashby Date: Mon, 21 May 2018 09:54:00 +0100 Subject: Moved unicorn lib to it's own package --- unicorn/Unicorn_test.go | 76 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 unicorn/Unicorn_test.go (limited to 'unicorn/Unicorn_test.go') diff --git a/unicorn/Unicorn_test.go b/unicorn/Unicorn_test.go new file mode 100644 index 0000000..358dc7b --- /dev/null +++ b/unicorn/Unicorn_test.go @@ -0,0 +1,76 @@ +package unicorn + +import ( + "reflect" + "testing" + "time" +) + +func TestFakeUnicorn(t *testing.T) { + unicorn, err := NewUnicorn() + 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) +} -- cgit v1.2.3-ZIG