|
| 1 | +package structures |
| 2 | + |
| 3 | +import ( |
| 4 | + "testing" |
| 5 | + |
| 6 | + "github.com/stretchr/testify/assert" |
| 7 | +) |
| 8 | + |
| 9 | +func Test_l2s(t *testing.T) { |
| 10 | + ast := assert.New(t) |
| 11 | + ast.Equal([]int{}, List2Ints(nil), "输入nil,没有返回[]int{}") |
| 12 | + |
| 13 | + one2three := &ListNode{ |
| 14 | + Val: 1, |
| 15 | + Next: &ListNode{ |
| 16 | + Val: 2, |
| 17 | + Next: &ListNode{ |
| 18 | + Val: 3, |
| 19 | + }, |
| 20 | + }, |
| 21 | + } |
| 22 | + ast.Equal([]int{1, 2, 3}, List2Ints(one2three), "没有成功地转换成[]int") |
| 23 | + |
| 24 | + limit := 100 |
| 25 | + overLimitList := Ints2List(make([]int, limit+1)) |
| 26 | + ast.Panics(func() { List2Ints(overLimitList) }, "转换深度超过 %d 限制的链条,没有 panic", limit) |
| 27 | +} |
| 28 | + |
| 29 | +func Test_s2l(t *testing.T) { |
| 30 | + ast := assert.New(t) |
| 31 | + ast.Nil(Ints2List([]int{}), "输入[]int{},没有返回nil") |
| 32 | + |
| 33 | + ln := Ints2List([]int{1, 2, 3, 4, 5, 6, 7, 8, 9}) |
| 34 | + i := 1 |
| 35 | + for ln != nil { |
| 36 | + ast.Equal(i, ln.Val, "对应的值不对") |
| 37 | + ln = ln.Next |
| 38 | + i++ |
| 39 | + } |
| 40 | +} |
| 41 | + |
| 42 | +func Test_getNodeWith(t *testing.T) { |
| 43 | + ast := assert.New(t) |
| 44 | + // |
| 45 | + ln := Ints2List([]int{1, 2, 3, 4, 5, 6, 7, 8, 9}) |
| 46 | + val := 10 |
| 47 | + node := &ListNode{ |
| 48 | + Val: val, |
| 49 | + } |
| 50 | + tail := ln |
| 51 | + for tail.Next != nil { |
| 52 | + tail = tail.Next |
| 53 | + } |
| 54 | + tail.Next = node |
| 55 | + expected := node |
| 56 | + actual := ln.GetNodeWith(val) |
| 57 | + ast.Equal(expected, actual) |
| 58 | +} |
| 59 | + |
| 60 | +func Test_Ints2ListWithCycle(t *testing.T) { |
| 61 | + ast := assert.New(t) |
| 62 | + ints := []int{1, 2, 3} |
| 63 | + l := Ints2ListWithCycle(ints, -1) |
| 64 | + ast.Equal(ints, List2Ints(l)) |
| 65 | + |
| 66 | + l = Ints2ListWithCycle(ints, 1) |
| 67 | + ast.Panics(func() { List2Ints(l) }) |
| 68 | +} |
0 commit comments