// Copyright (c) 2013-2014 Conformal Systems LLC. // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. package btcchain_test import ( "reflect" "sort" "testing" "time" "github.com/conformal/btcchain" ) // TestTimeSorter tests the timeSorter implementation. func TestTimeSorter(t *testing.T) { tests := []struct { in []time.Time want []time.Time }{ { in: []time.Time{ time.Unix(1351228575, 0), // Fri Oct 26 05:16:15 UTC 2012 (Block #205000) time.Unix(1351228575, 1), // Fri Oct 26 05:16:15 UTC 2012 (+1 nanosecond) time.Unix(1348310759, 0), // Sat Sep 22 10:45:59 UTC 2012 (Block #200000) time.Unix(1305758502, 0), // Wed May 18 22:41:42 UTC 2011 (Block #125000) time.Unix(1347777156, 0), // Sun Sep 16 06:32:36 UTC 2012 (Block #199000) time.Unix(1349492104, 0), // Sat Oct 6 02:55:04 UTC 2012 (Block #202000) }, want: []time.Time{ time.Unix(1305758502, 0), // Wed May 18 22:41:42 UTC 2011 (Block #125000) time.Unix(1347777156, 0), // Sun Sep 16 06:32:36 UTC 2012 (Block #199000) time.Unix(1348310759, 0), // Sat Sep 22 10:45:59 UTC 2012 (Block #200000) time.Unix(1349492104, 0), // Sat Oct 6 02:55:04 UTC 2012 (Block #202000) time.Unix(1351228575, 0), // Fri Oct 26 05:16:15 UTC 2012 (Block #205000) time.Unix(1351228575, 1), // Fri Oct 26 05:16:15 UTC 2012 (+1 nanosecond) }, }, } for i, test := range tests { result := make([]time.Time, len(test.in)) copy(result, test.in) sort.Sort(btcchain.TstTimeSorter(result)) if !reflect.DeepEqual(result, test.want) { t.Errorf("timeSorter #%d got %v want %v", i, result, test.want) continue } } }