| package check_test |
| |
| import ( |
| . "gopkg.in/check.v1" |
| ) |
| |
| var _ = Suite(&PrinterS{}) |
| |
| type PrinterS struct{} |
| |
| func (s *PrinterS) TestCountSuite(c *C) { |
| suitesRun += 1 |
| } |
| |
| var printTestFuncLine int |
| |
| func init() { |
| printTestFuncLine = getMyLine() + 3 |
| } |
| |
| func printTestFunc() { |
| println(1) // Comment1 |
| if 2 == 2 { // Comment2 |
| println(3) // Comment3 |
| } |
| switch 5 { |
| case 6: println(6) // Comment6 |
| println(7) |
| } |
| switch interface{}(9).(type) {// Comment9 |
| case int: println(10) |
| println(11) |
| } |
| select { |
| case <-(chan bool)(nil): println(14) |
| println(15) |
| default: println(16) |
| println(17) |
| } |
| println(19, |
| 20) |
| _ = func() { println(21) |
| println(22) |
| } |
| println(24, func() { |
| println(25) |
| }) |
| // Leading comment |
| // with multiple lines. |
| println(29) // Comment29 |
| } |
| |
| var printLineTests = []struct { |
| line int |
| output string |
| }{ |
| {1, "println(1) // Comment1"}, |
| {2, "if 2 == 2 { // Comment2\n ...\n}"}, |
| {3, "println(3) // Comment3"}, |
| {5, "switch 5 {\n...\n}"}, |
| {6, "case 6:\n println(6) // Comment6\n ..."}, |
| {7, "println(7)"}, |
| {9, "switch interface{}(9).(type) { // Comment9\n...\n}"}, |
| {10, "case int:\n println(10)\n ..."}, |
| {14, "case <-(chan bool)(nil):\n println(14)\n ..."}, |
| {15, "println(15)"}, |
| {16, "default:\n println(16)\n ..."}, |
| {17, "println(17)"}, |
| {19, "println(19,\n 20)"}, |
| {20, "println(19,\n 20)"}, |
| {21, "_ = func() {\n println(21)\n println(22)\n}"}, |
| {22, "println(22)"}, |
| {24, "println(24, func() {\n println(25)\n})"}, |
| {25, "println(25)"}, |
| {26, "println(24, func() {\n println(25)\n})"}, |
| {29, "// Leading comment\n// with multiple lines.\nprintln(29) // Comment29"}, |
| } |
| |
| func (s *PrinterS) TestPrintLine(c *C) { |
| for _, test := range printLineTests { |
| output, err := PrintLine("printer_test.go", printTestFuncLine+test.line) |
| c.Assert(err, IsNil) |
| c.Assert(output, Equals, test.output) |
| } |
| } |
| |
| var indentTests = []struct { |
| in, out string |
| }{ |
| {"", ""}, |
| {"\n", "\n"}, |
| {"a", ">>>a"}, |
| {"a\n", ">>>a\n"}, |
| {"a\nb", ">>>a\n>>>b"}, |
| {" ", ">>> "}, |
| } |
| |
| func (s *PrinterS) TestIndent(c *C) { |
| for _, test := range indentTests { |
| out := Indent(test.in, ">>>") |
| c.Assert(out, Equals, test.out) |
| } |
| |
| } |