github.com/goonzoid/gcli@v0.2.3-0.20150926213610-155587606ea1/skeleton/executable_test.go (about) 1 package skeleton 2 3 import ( 4 "reflect" 5 "testing" 6 ) 7 8 func TestOverwrite(t *testing.T) { 9 tests := []struct { 10 initExecutable, expt *Executable 11 success bool 12 inputKey string 13 inputValue interface{} 14 }{ 15 { 16 initExecutable: &Executable{Name: "todo"}, 17 inputKey: "Name", 18 inputValue: "todo-ng", 19 success: true, 20 expt: &Executable{Name: "todo-ng"}, 21 }, 22 { 23 initExecutable: &Executable{Name: "todo"}, 24 inputKey: "Name", 25 inputValue: 1, 26 success: false, 27 expt: &Executable{}, 28 }, 29 30 { 31 initExecutable: &Executable{ 32 Name: "todo", 33 Commands: []Command{ 34 {Name: "add"}, 35 }, 36 }, 37 inputKey: "Commands", 38 inputValue: []Command{ 39 {Name: "list"}, 40 }, 41 success: true, 42 expt: &Executable{ 43 Name: "todo", 44 Commands: []Command{ 45 {Name: "list"}, 46 }, 47 }, 48 }, 49 { 50 initExecutable: &Executable{ 51 Name: "todo", 52 Flags: []Flag{ 53 {Name: "add"}, 54 }, 55 }, 56 inputKey: "Flags", 57 inputValue: []Flag{ 58 {Name: "list"}, 59 }, 60 success: true, 61 expt: &Executable{ 62 Name: "todo", 63 Flags: []Flag{ 64 {Name: "list"}, 65 }, 66 }, 67 }, 68 } 69 70 for i, tt := range tests { 71 out := tt.initExecutable 72 err := out.Overwrite(tt.inputKey, tt.inputValue) 73 if !tt.success && err == nil { 74 t.Fatalf("#%d expects to be error", i) 75 } 76 77 if !tt.success { 78 continue 79 } 80 81 if err != nil { 82 t.Fatal(err) 83 } 84 if !reflect.DeepEqual(out, tt.expt) { 85 t.Errorf("#%d expects %#v to be eq %#v", i, out, tt.expt) 86 } 87 } 88 89 }