anbt-sql-formatter 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  require File.join(File.expand_path(File.dirname(__FILE__)), "helper")
4
2
 
5
3
  require "anbt-sql-formatter/formatter"
@@ -20,483 +18,478 @@ class TestAnbtSqlFormatter < Test::Unit::TestCase
20
18
  Helper.format_tokens(tokens)
21
19
  end
22
20
 
23
- def test_modify_keyword_case
24
- msg = "upcase"
25
-
26
- ########
27
- @rule.keyword = AnbtSql::Rule::KEYWORD_UPPER_CASE
28
-
29
- tokens = @parser.parse("select")
30
- @fmt.modify_keyword_case(tokens)
31
- assert_equals(
32
- msg + "",
33
- strip_indent(
34
- <<-EOB
35
- keyword (SELECT)
36
- EOB
37
- ),
38
- _format(tokens)
39
- )
40
-
41
- ########
42
- msg = "downcase"
43
- @rule.keyword = AnbtSql::Rule::KEYWORD_LOWER_CASE
21
+ def token_new(type, string)
22
+ type_map = {
23
+ name: AnbtSql::TokenConstants::NAME,
24
+ space: AnbtSql::TokenConstants::SPACE
25
+ }
26
+ _type = type_map.fetch(type)
44
27
 
45
- tokens = @parser.parse("SELECT")
46
- @fmt.modify_keyword_case(tokens)
47
- assert_equals(
48
- msg + "",
49
- strip_indent(
50
- <<-EOB
51
- keyword (select)
52
- EOB
53
- ),
54
- _format(tokens)
55
- )
28
+ AnbtSql::Token.new(_type, string)
56
29
  end
57
30
 
58
31
 
59
- def test_concat_operator_for_oracle
60
- msg = "concat_operator_for_oracle - "
61
-
62
- ########
63
- tokens = @parser.parse("a+")
64
- @fmt.concat_operator_for_oracle(tokens)
65
- assert_equals(
66
- msg + "length is less than 3, should do nothing",
67
- strip_indent(
68
- <<-EOB
69
- name (a)
70
- symbol (+)
71
- EOB
72
- ),
73
- _format(tokens)
74
- )
75
-
76
- ########
77
- tokens = @parser.parse("(+)")
78
- @fmt.concat_operator_for_oracle(tokens)
79
- assert_equals(
80
- msg + "",
81
- strip_indent(
82
- <<-EOB
83
- symbol ((+))
84
- EOB
85
- ),
86
- _format(tokens)
87
- )
88
-
89
- ########
90
- tokens = @parser.parse("(+)")
91
- tokens = @fmt.format_list(tokens)
92
- assert_equals(
93
- msg + "format_list()",
94
- strip_indent(
95
- <<-EOB
96
- symbol ((+))
97
- EOB
98
- ),
99
- _format(tokens)
100
- )
32
+ sub_test_case "modify_keyword_case" do
33
+ test "upper case" do
34
+ @rule.keyword = AnbtSql::Rule::KEYWORD_UPPER_CASE
35
+
36
+ tokens = @parser.parse("select")
37
+ @fmt.modify_keyword_case(tokens)
38
+ assert_equal(
39
+ strip_indent(
40
+ <<-EOB
41
+ keyword (SELECT)
42
+ EOB
43
+ ),
44
+ _format(tokens)
45
+ )
46
+ end
47
+
48
+ test "lower case" do
49
+ @rule.keyword = AnbtSql::Rule::KEYWORD_LOWER_CASE
50
+
51
+ tokens = @parser.parse("SELECT")
52
+ @fmt.modify_keyword_case(tokens)
53
+ assert_equal(
54
+ strip_indent(
55
+ <<-EOB
56
+ keyword (select)
57
+ EOB
58
+ ),
59
+ _format(tokens)
60
+ )
61
+ end
101
62
  end
102
63
 
103
-
104
- def test_remove_symbol_side_space
105
- msg = "remove_symbol_side_space - "
106
-
107
- ########
108
- tokens = @parser.parse("a (b")
109
- @fmt.remove_symbol_side_space(tokens)
110
- assert_equals(
111
- msg + "",
112
- strip_indent(
113
- <<-EOB
114
- name (a)
115
- symbol (()
116
- name (b)
117
- EOB
118
- ),
119
- _format(tokens)
120
- )
121
-
122
64
 
123
- ########
124
- tokens = @parser.parse("a( b")
125
- @fmt.remove_symbol_side_space(tokens)
126
- assert_equals(
127
- msg + "", strip_indent(
128
- <<-EOB
129
- name (a)
130
- symbol (()
131
- name (b)
132
- EOB
133
- ),
134
- _format(tokens)
135
- )
136
-
137
-
138
- ########
139
- tokens = @parser.parse("a ( b")
140
- @fmt.remove_symbol_side_space(tokens)
141
- assert_equals(
142
- msg + "",
143
- strip_indent(
144
- <<-EOB
145
- name (a)
146
- symbol (()
147
- name (b)
148
- EOB
149
- ),
150
- _format(tokens)
151
- )
65
+ sub_test_case "concat_operator_for_oracle" do
66
+ test "length is less than 3, should do nothing" do
67
+ tokens = @parser.parse("a+")
68
+ @fmt.concat_operator_for_oracle(tokens)
69
+ assert_equal(
70
+ strip_indent(
71
+ <<-EOB
72
+ name (a)
73
+ symbol (+)
74
+ EOB
75
+ ),
76
+ _format(tokens)
77
+ )
78
+ end
79
+
80
+ test "basic" do
81
+ tokens = @parser.parse("(+)")
82
+ @fmt.concat_operator_for_oracle(tokens)
83
+ assert_equal(
84
+ strip_indent(
85
+ <<-EOB
86
+ symbol ((+))
87
+ EOB
88
+ ),
89
+ _format(tokens)
90
+ )
91
+ end
92
+
93
+ test "format_list" do
94
+ tokens = @parser.parse("(+)")
95
+ tokens = @fmt.format_list(tokens)
96
+ assert_equal(
97
+ strip_indent(
98
+ <<-EOB
99
+ symbol ((+))
100
+ EOB
101
+ ),
102
+ _format(tokens)
103
+ )
104
+ end
152
105
  end
153
-
154
-
155
- def test_special_treatment_for_parenthesis_with_one_element
156
- msg = "special_treatment_for_parenthesis_with_one_element - "
157
-
158
- ########
159
- tokens = @parser.parse("( 1 )")
160
- @fmt.special_treatment_for_parenthesis_with_one_element(tokens)
161
- assert_equals(
162
- msg + "one element, should not separate",
163
- strip_indent(
164
- <<-EOB
165
- symbol ((1))
166
- EOB
167
- ),
168
- _format(tokens)
169
- )
170
106
 
171
107
 
172
- ########
173
- tokens = @parser.parse("(1,2)")
174
- @fmt.special_treatment_for_parenthesis_with_one_element(tokens)
175
- assert_equals(
176
- msg + "more than one element, should separate",
177
- strip_indent(
178
- <<-EOB
179
- symbol (()
180
- value (1)
181
- symbol (,)
182
- value (2)
183
- symbol ())
184
- EOB
185
- ),
186
- _format(tokens)
187
- )
108
+ sub_test_case "remove_symbol_side_space" do
109
+ test "a (b" do
110
+ tokens = @parser.parse("a (b")
111
+ @fmt.remove_symbol_side_space(tokens)
112
+ assert_equal(
113
+ strip_indent(
114
+ <<-EOB
115
+ name (a)
116
+ symbol (()
117
+ name (b)
118
+ EOB
119
+ ),
120
+ _format(tokens)
121
+ )
122
+ end
123
+
124
+ test "a( b" do
125
+ tokens = @parser.parse("a( b")
126
+ @fmt.remove_symbol_side_space(tokens)
127
+ assert_equal(
128
+ strip_indent(
129
+ <<-EOB
130
+ name (a)
131
+ symbol (()
132
+ name (b)
133
+ EOB
134
+ ),
135
+ _format(tokens)
136
+ )
137
+ end
138
+
139
+ test "a ( b" do
140
+ tokens = @parser.parse("a ( b")
141
+ @fmt.remove_symbol_side_space(tokens)
142
+ assert_equal(
143
+ strip_indent(
144
+ <<-EOB
145
+ name (a)
146
+ symbol (()
147
+ name (b)
148
+ EOB
149
+ ),
150
+ _format(tokens)
151
+ )
152
+ end
188
153
  end
189
-
190
154
 
191
- def test_insert_space_between_tokens
192
- msg = "insert_space_between_tokens - "
193
155
 
194
- ########
195
- tokens = @parser.parse("a=")
196
- @fmt.insert_space_between_tokens(tokens)
197
- assert_equals(msg,
198
- strip_indent(
199
- <<-EOB
200
- name (a)
201
- space ( )
202
- symbol (=)
203
- EOB
204
- ),
205
- _format(tokens)
206
- )
207
-
208
- ########
209
- tokens = @parser.parse("=b")
210
- @fmt.insert_space_between_tokens(tokens)
211
- assert_equals(msg,
212
- strip_indent(
213
- <<-EOB
214
- symbol (=)
215
- space ( )
216
- name (b)
217
- EOB
218
- ),
219
- _format(tokens)
220
- )
156
+ sub_test_case "special_treatment_for_parenthesis_with_one_element" do
157
+ test "one element, should not separate" do
158
+ tokens = @parser.parse("( 1 )")
159
+ @fmt.special_treatment_for_parenthesis_with_one_element(tokens)
160
+ assert_equal(
161
+ strip_indent(
162
+ <<-EOB
163
+ symbol ((1))
164
+ EOB
165
+ ),
166
+ _format(tokens)
167
+ )
168
+ end
169
+
170
+ test "more than one element, should separate" do
171
+ tokens = @parser.parse("(1,2)")
172
+ @fmt.special_treatment_for_parenthesis_with_one_element(tokens)
173
+ assert_equal(
174
+ strip_indent(
175
+ <<-EOB
176
+ symbol (()
177
+ value (1)
178
+ symbol (,)
179
+ value (2)
180
+ symbol ())
181
+ EOB
182
+ ),
183
+ _format(tokens)
184
+ )
185
+ end
221
186
  end
222
187
 
223
-
224
- def test_insert_return_and_indent
225
- msg = "insert_return_and_indent - "
226
-
227
- ########
228
- tokens = @parser.parse("foo bar")
229
-
230
- index, indent_depth = 1, 1
231
-
232
- assert_equals(
233
- msg + "before",
234
- strip_indent(
235
- <<-EOB
236
- name (foo)
237
- space ( )
238
- name (bar)
239
- EOB
240
- ),
241
- _format(tokens)
242
- )
243
-
244
- result = @fmt.insert_return_and_indent(tokens, index, indent_depth)
245
-
246
- assert_equals(
247
- msg + "index: #{index} / indent depth: #{indent_depth}",
248
- strip_indent(
249
- <<-EOB
250
- name (foo)
251
- space (\n#{INDENT_STR})
252
- name (bar)
253
- EOB
254
- ),
255
- _format(tokens)
256
- )
257
-
258
- ########
259
- # msg = "" #"後の空白を置き換え"
260
- tokens = @parser.parse("select foo")
261
-
262
- index, indent_depth = 1, 1
263
-
264
- assert_equals(
265
- msg + "before",
266
- strip_indent(
267
- <<-EOB
268
- keyword (select)
269
- space ( )
270
- name (foo)
271
- EOB
272
- ),
273
- _format(tokens)
274
- )
275
-
276
- result = @fmt.insert_return_and_indent(tokens, index, indent_depth)
277
-
278
- assert_equals(
279
- msg + "#{msg}: index: #{index} / indent depth: #{indent_depth}",
280
- strip_indent(
281
- <<-EOB
282
- keyword (select)
283
- space (\n#{INDENT_STR})
284
- name (foo)
285
- EOB
286
- ),
287
- _format(tokens)
288
- )
289
-
290
- ########
291
- msg = "" #"前の空白を置き換え"
292
- tokens = @parser.parse("select foo")
293
- index, indent_depth = 2, 1
294
-
295
- assert_equals(
296
- msg + "before",
297
- strip_indent(
298
- <<-EOB
299
- keyword (select)
300
- space ( )
301
- name (foo)
302
- EOB
303
- ),
304
- _format(tokens)
305
- )
306
-
307
- result = @fmt.insert_return_and_indent(tokens, index, indent_depth)
308
- assert_equals(
309
- msg + "", 0, result)
310
-
311
- assert_equals(
312
- msg + "#{msg}: index: #{index} / indent depth: #{indent_depth}",
313
- strip_indent(
314
- <<-EOB
315
- keyword (select)
316
- space (\n#{INDENT_STR})
317
- name (foo)
318
- EOB
319
- ),
320
- _format(tokens)
321
- )
322
-
323
- ########
324
- msg = "indent depth = 2"
325
- tokens = @parser.parse("foo bar")
326
- index, indent_depth = 1, 2
327
-
328
- assert_equals(
329
- msg + "before",
330
- strip_indent(
331
- <<-EOB
332
- name (foo)
333
- space ( )
334
- name (bar)
335
- EOB
336
- ),
337
- _format(tokens)
338
- )
339
-
340
- result = @fmt.insert_return_and_indent(tokens, index, indent_depth)
341
-
342
- assert_equals(
343
- msg + "#{msg}: index: #{index} / indent depth: #{indent_depth}",
344
- strip_indent(
345
- <<-EOB
346
- name (foo)
347
- space (\n#{INDENT_STR}#{INDENT_STR})
348
- name (bar)
349
- EOB
350
- ),
351
- _format(tokens)
352
- )
353
-
354
- ########
355
- msg = "kw, nl, kw"
356
- tokens = @parser.parse("select\ncase")
357
188
 
358
- assert_equals(
359
- msg + "",
360
- strip_indent(
361
- <<-EOB
362
- keyword (select)
363
- space (\n)
364
- keyword (case)
365
- EOB
366
- ),
367
- _format(tokens)
368
- )
189
+ sub_test_case "insert_space_between_tokens" do
190
+ test "a=" do
191
+ tokens = @parser.parse("a=")
192
+ @fmt.insert_space_between_tokens(tokens)
193
+ assert_equal(
194
+ strip_indent(
195
+ <<-EOB
196
+ name (a)
197
+ space ( )
198
+ symbol (=)
199
+ EOB
200
+ ),
201
+ _format(tokens)
202
+ )
203
+ end
204
+
205
+ test "=b" do
206
+ tokens = @parser.parse("=b")
207
+ @fmt.insert_space_between_tokens(tokens)
208
+ assert_equal(
209
+ strip_indent(
210
+ <<-EOB
211
+ symbol (=)
212
+ space ( )
213
+ name (b)
214
+ EOB
215
+ ),
216
+ _format(tokens)
217
+ )
218
+ end
219
+ end
369
220
 
370
- ########
371
- =begin
372
- msg = "FROM の前で改行"
373
221
 
374
- assert_equals(
375
- msg + "",
376
- strip_indent(
377
- <<-EOB
378
- SELECT
379
- <-indent-><-indent->aa
380
- <-indent-><-indent->,bb
381
- <-indent-><-indent->,cc
382
- <-indent-><-indent->,dd
383
- <-indent-><-indent->,ee
384
- <-indent->FROM
385
- <-indent-><-indent->foo
386
- ;
387
- EOB
388
- ),
389
- # _format(tokens),
390
- @fmt.format("SELECT aa ,bb ,cc ,dd ,ee FROM foo;")
391
- )
392
- =end
393
-
394
- # ########
395
- # msg = "指定した index に対して tokens[index] が存在するので 1 を返すべき"
396
- # 間違い。tokens[index] が存在していても 1 を返すとは限らない。
397
- # tokens = parser.parse("foo bar")
398
- # #pp tokens
399
- # index = 1
400
- # result = @fmt.insert_return_and_indent(tokens, index, 1)
401
-
402
- # assert_equals(msg + "", 1, result, msg)
403
-
404
- ########
405
- msg = "指定した index に対して tokens[index] が存在しないので 0 を返すべき"
406
- tokens = @parser.parse("foo bar")
407
-
408
- index = 10
409
- result = @fmt.insert_return_and_indent(tokens, index, 1)
410
-
411
- assert_equals(msg + "", 0, result)
222
+ sub_test_case "insert_return_and_indent" do
223
+ test "basic" do
224
+ msg = "basic - "
225
+ tokens = @parser.parse("foo bar")
226
+
227
+ index, indent_depth = 1, 1
228
+
229
+ assert_equals(
230
+ msg + "before",
231
+ strip_indent(
232
+ <<-EOB
233
+ name (foo)
234
+ space ( )
235
+ name (bar)
236
+ EOB
237
+ ),
238
+ _format(tokens)
239
+ )
240
+
241
+ result = @fmt.insert_return_and_indent(tokens, index, indent_depth)
242
+
243
+ assert_equals(
244
+ msg + "index: #{index} / indent depth: #{indent_depth}",
245
+ strip_indent(
246
+ <<-EOB
247
+ name (foo)
248
+ space (\n#{INDENT_STR})
249
+ name (bar)
250
+ EOB
251
+ ),
252
+ _format(tokens)
253
+ )
254
+ end
255
+
256
+ test "replace: after" do
257
+ msg = "replace: after - " # 後の空白を置き換え
258
+ tokens = @parser.parse("select foo")
259
+
260
+ index, indent_depth = 1, 1
261
+
262
+ assert_equals(
263
+ msg + "before",
264
+ strip_indent(
265
+ <<-EOB
266
+ keyword (select)
267
+ space ( )
268
+ name (foo)
269
+ EOB
270
+ ),
271
+ _format(tokens)
272
+ )
273
+
274
+ result = @fmt.insert_return_and_indent(tokens, index, indent_depth)
275
+
276
+ assert_equals(
277
+ msg + "#{msg}: index: #{index} / indent depth: #{indent_depth}",
278
+ strip_indent(
279
+ <<-EOB
280
+ keyword (select)
281
+ space (\n#{INDENT_STR})
282
+ name (foo)
283
+ EOB
284
+ ),
285
+ _format(tokens)
286
+ )
287
+ end
288
+
289
+ test "replace: before" do
290
+ msg = "replace: before - " # 前の空白を置き換え
291
+ tokens = @parser.parse("select foo")
292
+ index, indent_depth = 2, 1
293
+
294
+ assert_equals(
295
+ msg + "before",
296
+ strip_indent(
297
+ <<-EOB
298
+ keyword (select)
299
+ space ( )
300
+ name (foo)
301
+ EOB
302
+ ),
303
+ _format(tokens)
304
+ )
305
+
306
+ result = @fmt.insert_return_and_indent(tokens, index, indent_depth)
307
+ assert_equals(
308
+ msg + "", 0, result)
309
+
310
+ assert_equals(
311
+ msg + "#{msg}: index: #{index} / indent depth: #{indent_depth}",
312
+ strip_indent(
313
+ <<-EOB
314
+ keyword (select)
315
+ space (\n#{INDENT_STR})
316
+ name (foo)
317
+ EOB
318
+ ),
319
+ _format(tokens)
320
+ )
321
+ end
322
+
323
+ test "indent depth = 2" do
324
+ msg = "indent depth = 2 - "
325
+ tokens = @parser.parse("foo bar")
326
+ index, indent_depth = 1, 2
327
+
328
+ assert_equals(
329
+ msg + "before",
330
+ strip_indent(
331
+ <<-EOB
332
+ name (foo)
333
+ space ( )
334
+ name (bar)
335
+ EOB
336
+ ),
337
+ _format(tokens)
338
+ )
339
+
340
+ result = @fmt.insert_return_and_indent(tokens, index, indent_depth)
341
+
342
+ assert_equals(
343
+ msg + "#{msg}: index: #{index} / indent depth: #{indent_depth}",
344
+ strip_indent(
345
+ <<-EOB
346
+ name (foo)
347
+ space (\n#{INDENT_STR}#{INDENT_STR})
348
+ name (bar)
349
+ EOB
350
+ ),
351
+ _format(tokens)
352
+ )
353
+ end
354
+
355
+ test "kw, nl, kw" do
356
+ tokens = @parser.parse("select\ncase")
357
+
358
+ assert_equal(
359
+ strip_indent(
360
+ <<-EOB
361
+ keyword (select)
362
+ space (\n)
363
+ keyword (case)
364
+ EOB
365
+ ),
366
+ _format(tokens)
367
+ )
368
+ end
369
+
370
+ test "insert: return 1" do
371
+ tokens = [
372
+ token_new(:name, "foo"),
373
+ token_new(:name, "bar")
374
+ ]
375
+
376
+ index = 1
377
+ result = @fmt.insert_return_and_indent(tokens, index, 1)
378
+
379
+ assert_equal(1, result)
380
+ end
381
+
382
+ test "replace: return 0" do
383
+ tokens = [
384
+ token_new(:name, "foo"),
385
+ token_new(:space, " "),
386
+ token_new(:name, "bar")
387
+ ]
388
+
389
+ index = 2
390
+ result = @fmt.insert_return_and_indent(tokens, index, 1)
391
+
392
+ assert_equal(0, result)
393
+ end
394
+
395
+ test "out of bounds" do
396
+ tokens = [
397
+ token_new(:name, "foo"),
398
+ token_new(:space, " "),
399
+ token_new(:name, "bar")
400
+ ]
401
+
402
+ index = 10
403
+ result = @fmt.insert_return_and_indent(tokens, index, 1)
404
+
405
+ assert_equal(0, result)
406
+ end
412
407
  end ## insert_return_and_indent
413
408
 
414
409
 
415
- def test_format
416
- msg = "format - "
417
-
418
- ########
419
- func_name = "TEST_FUNCTION"
420
- @rule.function_names << func_name
421
-
422
- assert_equals(
423
- msg + "function with parenthesis",
424
- strip_indent(
425
- <<-EOB
426
- SELECT
427
- <-indent-><-indent->#{func_name}( * )
428
- EOB
429
- ),
430
- @fmt.format("select #{func_name}(*)")
431
- )
432
-
433
- @rule.function_names.delete func_name
434
-
435
- ########
436
- assert_equals(
437
- msg + "Next line of single commnet",
438
- strip_indent(
439
- <<-EOB
440
- SELECT
441
- <-indent-><-indent->-- comment
442
- <-indent-><-indent->name
443
- EOB
444
- ),
445
- @fmt.format(strip_indent(
446
- <<-EOB
447
- select
448
- -- comment
449
- name
450
- EOB
451
- ))
452
- )
453
-
454
- ########
455
- assert_equals(
456
- msg + "new line after single line comment",
457
- strip_indent(
458
- <<-EOB
459
- --a
460
- b
461
- EOB
462
- ),
463
- @fmt.format(strip_indent(
464
- <<-EOB
465
- --a
466
- b
467
- EOB
468
- ))
469
- );
470
-
471
- ########
472
- assert_equals(
473
- msg + "two line breaks after semicolon",
474
- strip_indent(
475
- <<-EOB
476
- a
477
- ;
478
-
479
- b
480
- EOB
481
- ),
482
- @fmt.format(strip_indent(
483
- <<-EOB
484
- a;b
485
- EOB
486
- ))
487
- );
488
-
489
- ########
490
- assert_equals(
491
- msg + "two line breaks after semicolon",
492
- strip_indent(
493
- <<-EOB
494
- a
495
- ;
496
- EOB
497
- ),
498
- @fmt.format("a;")
499
- )
410
+ sub_test_case "format" do
411
+ test "function with parenthesis" do
412
+ func_name = "TEST_FUNCTION"
413
+ @rule.function_names << func_name
414
+
415
+ assert_equal(
416
+ strip_indent(
417
+ <<-EOB
418
+ SELECT
419
+ <-indent-><-indent->#{func_name}( * )
420
+ EOB
421
+ ),
422
+ @fmt.format("select #{func_name}(*)")
423
+ )
424
+
425
+ @rule.function_names.delete func_name
426
+ end
427
+
428
+ test "Next line of single comment" do
429
+ assert_equal(
430
+ strip_indent(
431
+ <<-EOB
432
+ SELECT
433
+ <-indent-><-indent->-- comment
434
+ <-indent-><-indent->name
435
+ EOB
436
+ ),
437
+ @fmt.format(strip_indent(
438
+ <<-EOB
439
+ select
440
+ -- comment
441
+ name
442
+ EOB
443
+ ))
444
+ )
445
+ end
446
+
447
+ test "new line after single line comment" do
448
+ assert_equal(
449
+ strip_indent(
450
+ <<-EOB
451
+ --a
452
+ b
453
+ EOB
454
+ ),
455
+ @fmt.format(strip_indent(
456
+ <<-EOB
457
+ --a
458
+ b
459
+ EOB
460
+ ))
461
+ )
462
+ end
463
+
464
+ test "two line breaks after semicolon" do
465
+ assert_equal(
466
+ strip_indent(
467
+ <<-EOB
468
+ a
469
+ ;
470
+
471
+ b
472
+ EOB
473
+ ),
474
+ @fmt.format(strip_indent(
475
+ <<-EOB
476
+ a;b
477
+ EOB
478
+ ))
479
+ )
480
+ end
481
+
482
+ test "no line breaks after semicolon" do
483
+ assert_equal(
484
+ strip_indent(
485
+ <<-EOB
486
+ a
487
+ ;
488
+ EOB
489
+ ),
490
+ @fmt.format("a;")
491
+ )
492
+ end
500
493
  end
501
494
 
502
495
  def test_format_between
@@ -512,77 +505,59 @@ class TestAnbtSqlFormatter < Test::Unit::TestCase
512
505
  end
513
506
 
514
507
 
515
- def test_split_to_statements
516
- msg = "split_to_statements - "
517
-
518
- ########
519
- tokens = @parser.parse("a;b")
520
-
521
- assert_equals(
522
- msg + "first statement",
523
- "a",
524
- @fmt.split_to_statements(tokens)[0][0].string
525
- )
526
- assert_equals(
527
- msg + "second statement",
528
- "b",
529
- @fmt.split_to_statements(tokens)[1][0].string
530
- )
531
-
532
- ########
533
- tokens = @parser.parse(";")
534
- statements = @fmt.split_to_statements(tokens)
535
- assert_equals(
536
- msg,
537
- [],
538
- statements[0]
539
- )
540
- assert_equals(
541
- msg,
542
- [],
543
- statements[1]
544
- )
545
-
546
- ########
547
- tokens = @parser.parse("a;")
548
- statements = @fmt.split_to_statements(tokens)
549
- assert_equals(
550
- msg,
551
- "name (a)",
552
- _format( statements[0] )
553
- )
554
- assert_equals(
555
- msg,
556
- [],
557
- statements[1]
558
- )
559
-
560
- ########
561
- tokens = @parser.parse(";a")
562
- statements = @fmt.split_to_statements(tokens)
563
- assert_equals(
564
- msg,
565
- [],
566
- statements[0]
567
- )
568
- assert_equals(
569
- msg,
570
- "name (a)",
571
- _format( statements[1] )
572
- )
573
-
574
- ########
575
- tokens = @parser.parse("a;b")
576
- statements = @fmt.split_to_statements(tokens)
577
- assert_equals(
578
- msg,
579
- "name (a)",
580
- _format( statements[0] )
581
- )
582
- assert_equals(
583
- msg,
584
- "name (b)",
585
- _format( statements[1] )
586
- )
508
+ sub_test_case "split_to_statements" do
509
+ test "a;b" do
510
+ tokens = @parser.parse("a;b")
511
+ statements = @fmt.split_to_statements(tokens)
512
+
513
+ assert_equal(2, statements.size)
514
+ assert_equal(
515
+ "name (a)",
516
+ _format( statements[0] )
517
+ )
518
+ assert_equal(
519
+ "name (b)",
520
+ _format( statements[1] )
521
+ )
522
+ end
523
+
524
+ test ";" do
525
+ tokens = @parser.parse(";")
526
+ statements = @fmt.split_to_statements(tokens)
527
+ assert_equal(
528
+ [],
529
+ statements[0]
530
+ )
531
+ assert_equal(
532
+ [],
533
+ statements[1]
534
+ )
535
+ end
536
+
537
+ test "a;" do
538
+ tokens = @parser.parse("a;")
539
+ statements = @fmt.split_to_statements(tokens)
540
+ assert_equal(
541
+ "name (a)",
542
+ _format( statements[0] )
543
+ )
544
+ assert_equal(
545
+ [],
546
+ statements[1]
547
+ )
548
+ end
549
+
550
+ test ";a" do
551
+ tokens = @parser.parse(";a")
552
+ statements = @fmt.split_to_statements(tokens)
553
+ assert_equal(
554
+ [],
555
+ statements[0]
556
+ )
557
+ assert_equal(
558
+ "name (a)",
559
+ _format( statements[1] )
560
+ )
561
+ end
587
562
  end
588
563
  end