From 770ad7f44489d8f17ed66a9d48b36f5e4413772f Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Fri, 25 Mar 2016 13:42:41 -0400 Subject: [PATCH] Add some tests --- Makefile | 6 ++++++ src/rope_test.go | 46 ++++++++++++++++++++++++++++++++++++++++++++++ src/stack_test.go | 39 +++++++++++++++++++++++++++++++++++++++ src/view.go | 4 ++++ 4 files changed, 95 insertions(+) create mode 100644 src/rope_test.go create mode 100644 src/stack_test.go diff --git a/Makefile b/Makefile index 280a8c36..f3daedf0 100644 --- a/Makefile +++ b/Makefile @@ -8,3 +8,9 @@ install: syn-files build syn-files: mkdir -p ~/.micro/syntax cp -r runtime/* ~/.micro + +test: + go test ./src + +clean: + rm -f micro diff --git a/src/rope_test.go b/src/rope_test.go new file mode 100644 index 00000000..73fa1830 --- /dev/null +++ b/src/rope_test.go @@ -0,0 +1,46 @@ +package main + +import "testing" + +func TestInsert(t *testing.T) { + var tests = []struct { + origStr string + insertStr string + insertPos int + want string + }{ + {"foo", " bar", 3, "foo bar"}, + {"üñîç", "ø∂é", 4, "üñîçø∂é"}, + {"test", "3", 2, "te3st"}, + {"", "test", 0, "test"}, + } + for _, test := range tests { + r := NewRope(test.origStr) + r.Insert(test.insertPos, test.insertStr) + got := r.String() + if got != test.want { + t.Errorf("Insert(%d, %s) = %s", test.insertPos, test.insertStr, got) + } + } +} + +func TestRemove(t *testing.T) { + var tests = []struct { + inputStr string + removeStart int + removeEnd int + want string + }{ + {"foo bar", 3, 7, "foo"}, + {"üñîçø∂é", 0, 3, "çø∂é"}, + {"test", 0, 4, ""}, + } + for _, test := range tests { + r := NewRope(test.inputStr) + r.Remove(test.removeStart, test.removeEnd) + got := r.String() + if got != test.want { + t.Errorf("Remove(%d, %d) = %s", test.removeStart, test.removeEnd, got) + } + } +} diff --git a/src/stack_test.go b/src/stack_test.go new file mode 100644 index 00000000..a3526946 --- /dev/null +++ b/src/stack_test.go @@ -0,0 +1,39 @@ +package main + +import "testing" + +func TestStack(t *testing.T) { + stack := new(Stack) + + if stack.Len() != 0 { + t.Errorf("Len failed") + } + stack.Push(5) + stack.Push("test") + stack.Push(10) + if stack.Len() != 3 { + t.Errorf("Len failed") + } + + var popped interface{} + popped = stack.Pop() + if popped != 10 { + t.Errorf("Pop failed") + } + + popped = stack.Pop() + if popped != "test" { + t.Errorf("Pop failed") + } + + stack.Push("test") + popped = stack.Pop() + if popped != "test" { + t.Errorf("Pop failed") + } + stack.Pop() + popped = stack.Pop() + if popped != nil { + t.Errorf("Pop failed") + } +} diff --git a/src/view.go b/src/view.go index a5c88ece..c80cc026 100644 --- a/src/view.go +++ b/src/view.go @@ -84,6 +84,10 @@ func NewViewWidthHeight(buf *Buffer, m *Messenger, w, h int) *View { view: v, } + // Set mouseReleased to true because we assume the mouse is not being pressed when + // the editor is opened + v.mouseReleased = true + return v }