From 142c3e16a249095b0d63f2b41055d17cf059f045 Mon Sep 17 00:00:00 2001 From: Markus Zimmermann Date: Sat, 3 Jan 2015 22:10:00 +0100 Subject: [PATCH] Add some leak tests --- list/listTest.go | 62 +++++++++++++++++++++++++++++++++++------------- 1 file changed, 45 insertions(+), 17 deletions(-) diff --git a/list/listTest.go b/list/listTest.go index 6f716ba..ea7829d 100644 --- a/list/listTest.go +++ b/list/listTest.go @@ -4,6 +4,7 @@ import ( "testing" . "github.com/zimmski/container/test/assert" + "github.com/zimmski/go-leak" ) // V holds the value for basic list tests @@ -19,23 +20,27 @@ type ListTest struct { // Run executes all basic list tests func (lt *ListTest) Run(t *testing.T) { - lt.NewFilledList(t) - - lt.TestBasic(t) - lt.TestIterator(t) - lt.TestChannels(t) - lt.TestSlice(t) - lt.TestInserts(t) - lt.TestRemove(t) - lt.TestRemoveOccurrence(t) - lt.TestClear(t) - lt.TestCopy(t) - lt.TestIndexOf(t) - lt.TestGetSet(t) - lt.TestAddLists(t) - lt.TestFuncs(t) - lt.TestSwap(t) - lt.TestMoves(t) + Equal(t, 0, leak.GoRoutineLeaks(func() { + lt.NewFilledList(t) + + lt.TestBasic(t) + lt.TestIterator(t) + lt.TestChannels(t) + lt.TestSlice(t) + lt.TestInserts(t) + lt.TestRemove(t) + lt.TestRemoveOccurrence(t) + lt.TestClear(t) + lt.TestCopy(t) + lt.TestIndexOf(t) + lt.TestGetSet(t) + lt.TestAddLists(t) + lt.TestFuncs(t) + lt.TestSwap(t) + lt.TestMoves(t) + + lt.TestLeaks(t) + })) } // FillList fills up a given list with V @@ -790,3 +795,26 @@ func (lt *ListTest) TestMoves(t *testing.T) { Equal(t, l.Slice(), []interface{}{1, 4, 0, 2, 3, 0}) Equal(t, l.Len(), ll+1) } + +// TestLeaks test for leaks +func (lt *ListTest) TestLeaks(t *testing.T) { + l := lt.New(t) + + Equal(t, 0, leak.MemoryLeaks(func() { + l.Push(1) + l.Push(2) + l.Push(3) + + l.Pop() + l.Pop() + l.Pop() + })) + + Equal(t, 0, leak.MemoryLeaks(func() { + l.Push(1) + l.Push(2) + l.Push(3) + + l.Clear() + })) +}