@@ -10,41 +10,41 @@ func TestNewSnippet(t *testing.T) {
1010 Convey ("NewSnippet" , t , func () {
1111 Convey ("Should create snippet from valid line" , func () {
1212 src := []string {"line1" , "line2" , "line3" }
13-
13+
1414 snippet := NewSnippet (src , 2 )
15-
15+
1616 So (snippet .Line , ShouldEqual , 2 )
1717 So (snippet .Text , ShouldEqual , "line2" )
1818 So (snippet .Caret , ShouldEqual , "" )
1919 })
20-
20+
2121 Convey ("Should create snippet for first line" , func () {
2222 src := []string {"first line" , "second line" }
23-
23+
2424 snippet := NewSnippet (src , 1 )
25-
25+
2626 So (snippet .Line , ShouldEqual , 1 )
2727 So (snippet .Text , ShouldEqual , "first line" )
2828 })
29-
29+
3030 Convey ("Should create snippet for last line" , func () {
3131 src := []string {"first line" , "last line" }
32-
32+
3333 snippet := NewSnippet (src , 2 )
34-
34+
3535 So (snippet .Line , ShouldEqual , 2 )
3636 So (snippet .Text , ShouldEqual , "last line" )
3737 })
38-
38+
3939 Convey ("Should handle bounds issues gracefully" , func () {
4040 src := []string {"line1" , "line2" }
41-
41+
4242 Convey ("Line number 0 should return empty snippet with line number" , func () {
4343 snippet := NewSnippet (src , 0 )
4444 So (snippet .Line , ShouldEqual , 0 )
4545 So (snippet .Text , ShouldEqual , "" )
4646 })
47-
47+
4848 Convey ("Line number beyond bounds should return empty snippet with line number" , func () {
4949 snippet := NewSnippet (src , 10 )
5050 So (snippet .Line , ShouldEqual , 10 )
@@ -59,108 +59,108 @@ func TestNewSnippetWithCaret(t *testing.T) {
5959 Convey ("Should create snippet with single character caret" , func () {
6060 lines := []string {"hello world" }
6161 span := Span {Start : 6 , End : 7 } // Single character 'w'
62-
62+
6363 snippet := NewSnippetWithCaret (lines , span , 1 )
64-
64+
6565 So (snippet .Line , ShouldEqual , 1 )
6666 So (snippet .Text , ShouldEqual , "hello world" )
6767 So (snippet .Caret , ShouldEqual , " ^" )
6868 })
69-
69+
7070 Convey ("Should create snippet with multi-character caret" , func () {
7171 lines := []string {"hello world" }
7272 span := Span {Start : 6 , End : 11 } // "world"
73-
73+
7474 snippet := NewSnippetWithCaret (lines , span , 1 )
75-
75+
7676 So (snippet .Line , ShouldEqual , 1 )
7777 So (snippet .Text , ShouldEqual , "hello world" )
7878 So (snippet .Caret , ShouldEqual , " ~~~~~" )
7979 })
80-
80+
8181 Convey ("Should handle multi-line text" , func () {
8282 lines := []string {"first line" , "second line" , "third line" }
8383 span := Span {Start : 11 , End : 17 } // "second" in "second line" (starts at position 11)
84-
84+
8585 snippet := NewSnippetWithCaret (lines , span , 2 )
86-
86+
8787 So (snippet .Line , ShouldEqual , 2 )
8888 So (snippet .Text , ShouldEqual , "second line" )
8989 So (snippet .Caret , ShouldEqual , "~~~~~~" )
9090 })
91-
91+
9292 Convey ("Should handle tabs in visual offset" , func () {
9393 lines := []string {"\t hello world" }
9494 span := Span {Start : 5 , End : 10 } // "world" after tab
95-
95+
9696 snippet := NewSnippetWithCaret (lines , span , 1 )
97-
97+
9898 So (snippet .Line , ShouldEqual , 1 )
9999 So (snippet .Text , ShouldEqual , "\t hello world" )
100100 // Tab should expand to 4 spaces, so caret starts at position 4+5=9
101101 So (snippet .Caret , ShouldEqual , " ~~~~~" )
102102 })
103-
103+
104104 Convey ("Should handle line number out of bounds" , func () {
105105 lines := []string {"line1" , "line2" }
106106 span := Span {Start : 0 , End : 5 }
107-
107+
108108 Convey ("Line number too small" , func () {
109109 snippet := NewSnippetWithCaret (lines , span , 0 )
110-
110+
111111 So (snippet , ShouldResemble , Snippet {})
112112 })
113-
113+
114114 Convey ("Line number too large" , func () {
115115 snippet := NewSnippetWithCaret (lines , span , 3 )
116-
116+
117117 So (snippet , ShouldResemble , Snippet {})
118118 })
119119 })
120-
120+
121121 Convey ("Should handle empty lines" , func () {
122122 lines := []string {"" }
123123 span := Span {Start : 0 , End : 0 }
124-
124+
125125 snippet := NewSnippetWithCaret (lines , span , 1 )
126-
126+
127127 So (snippet .Line , ShouldEqual , 1 )
128128 So (snippet .Text , ShouldEqual , "" )
129129 So (snippet .Caret , ShouldEqual , "^" )
130130 })
131-
131+
132132 Convey ("Should handle span at line start" , func () {
133133 lines := []string {"hello world" }
134134 span := Span {Start : 0 , End : 1 } // First character
135-
135+
136136 snippet := NewSnippetWithCaret (lines , span , 1 )
137-
137+
138138 So (snippet .Line , ShouldEqual , 1 )
139139 So (snippet .Text , ShouldEqual , "hello world" )
140140 So (snippet .Caret , ShouldEqual , "^" )
141141 })
142-
142+
143143 Convey ("Should handle span at line end" , func () {
144144 lines := []string {"hello world" }
145145 span := Span {Start : 10 , End : 11 } // Last character
146-
146+
147147 snippet := NewSnippetWithCaret (lines , span , 1 )
148-
148+
149149 So (snippet .Line , ShouldEqual , 1 )
150150 So (snippet .Text , ShouldEqual , "hello world" )
151151 So (snippet .Caret , ShouldEqual , " ^" )
152152 })
153-
153+
154154 Convey ("Should handle mixed whitespace" , func () {
155155 lines := []string {" \t hello" }
156156 span := Span {Start : 5 , End : 6 } // First character of "hello"
157-
157+
158158 snippet := NewSnippetWithCaret (lines , span , 1 )
159-
159+
160160 So (snippet .Line , ShouldEqual , 1 )
161161 So (snippet .Text , ShouldEqual , " \t hello" )
162162 // space(1) + tab(3 more to align to 4) + space(1) = 5 spaces before caret
163163 So (snippet .Caret , ShouldEqual , " ^" )
164164 })
165165 })
166- }
166+ }
0 commit comments