@@ -85,29 +85,58 @@ public void HasGlyph_ReturnsTrue_IfCharDefined()
85
85
}
86
86
87
87
[ TestMethod ]
88
- public void GetGlyph_ReturnsTheProperGlyph_IfFound ( )
88
+ public void GetGlyphs_Throws_IfSpanIsEmpty ( )
89
89
{
90
- var glyph = _font . GetGlyph ( new ( 1 ) , Style1 ) ;
90
+ Should . Throw < ArgumentException > ( ( ) =>
91
+ _font . GetGlyphs ( Array . Empty < Rune > ( ) , Style1 ) ) ;
92
+ }
93
+
94
+ [ TestMethod ]
95
+ public void GetGlyphs_ReturnsTheExpectedGlyphsIncludingDefault_GreaterWidth ( )
96
+ {
97
+ var k = new [ ] { new Rune ( 1 ) , new Rune ( 256 ) , new Rune ( 3 ) } ;
98
+
99
+ var glyph = _font . GetGlyphs ( k , Style1 ) ;
91
100
var contents = glyph . GetContents ( ) ;
92
101
93
102
var cols = new [ , ]
94
103
{
95
104
{ ( new Rune ( '1' ) , Style1 ) , ( new ( '4' ) , Style1 ) , ( new ( '7' ) , Style1 ) } ,
96
105
{ ( new ( '2' ) , Style1 ) , ( new ( '5' ) , Style1 ) , ( new ( '8' ) , Style1 ) } ,
97
- { ( new ( '3' ) , Style1 ) , ( new ( '6' ) , Style1 ) , ( new ( '9' ) , Style1 ) }
106
+ { ( new ( '3' ) , Style1 ) , ( new ( '6' ) , Style1 ) , ( new ( '9' ) , Style1 ) } ,
107
+
108
+ { ( new ( 'a' ) , Style1 ) , ( new ( 'd' ) , Style1 ) , ( new ( 'g' ) , Style1 ) } ,
109
+ { ( new ( 'b' ) , Style1 ) , ( new ( 'e' ) , Style1 ) , ( new ( 'h' ) , Style1 ) } ,
110
+ { ( new ( 'c' ) , Style1 ) , ( new ( 'f' ) , Style1 ) , ( new ( 'i' ) , Style1 ) } ,
111
+ { ( new ( '1' ) , Style1 ) , ( new ( '2' ) , Style1 ) , ( new ( '3' ) , Style1 ) } ,
112
+
113
+ { ( new ( '1' ) , Style1 ) , ( new ( ' ' ) , Style1 ) , ( new ( '3' ) , Style1 ) }
98
114
} ;
99
-
115
+
100
116
contents . ShouldBe ( cols ) ;
101
117
}
102
-
118
+
103
119
[ TestMethod ]
104
- public void GetGlyph_ReturnsTheDefaultGlyph_IfNotFound ( )
120
+ public void GetGlyphs_ReturnsTheExpectedGlyphsIncludingReplacement_GreaterWidth ( )
105
121
{
106
- var glyph = _font . GetGlyph ( new ( 2 ) , Style1 ) ;
107
- var contents = glyph . GetContents ( ) ;
122
+ var font = new FigletFont ( "name" , Header , new Dictionary < int , ( string [ ] rows , int width ) > ( )
123
+ { { 1 , Char1 } , { 3 , Char0 } } ) ;
124
+
125
+ var k = new [ ] { new Rune ( 1 ) , new Rune ( 256 ) , new Rune ( 3 ) } ;
126
+
127
+ var glyphs = font . GetGlyphs ( k , Style1 ) ;
128
+ var contents = glyphs . GetContents ( ) ;
108
129
109
130
var cols = new [ , ]
110
131
{
132
+ { ( new Rune ( '1' ) , Style1 ) , ( new ( '4' ) , Style1 ) , ( new ( '7' ) , Style1 ) } ,
133
+ { ( new ( '2' ) , Style1 ) , ( new ( '5' ) , Style1 ) , ( new ( '8' ) , Style1 ) } ,
134
+ { ( new ( '3' ) , Style1 ) , ( new ( '6' ) , Style1 ) , ( new ( '9' ) , Style1 ) } ,
135
+
136
+ { ( new ( '┌' ) , Style1 ) , ( new ( '│' ) , Style1 ) , ( new ( '└' ) , Style1 ) } ,
137
+ { ( new ( '─' ) , Style1 ) , ( new ( ' ' ) , Style1 ) , ( new ( '─' ) , Style1 ) } ,
138
+ { ( new ( '┐' ) , Style1 ) , ( new ( '│' ) , Style1 ) , ( new Rune ( '┘' ) , Style1 ) } ,
139
+
111
140
{ ( new Rune ( 'a' ) , Style1 ) , ( new ( 'd' ) , Style1 ) , ( new ( 'g' ) , Style1 ) } ,
112
141
{ ( new ( 'b' ) , Style1 ) , ( new ( 'e' ) , Style1 ) , ( new ( 'h' ) , Style1 ) } ,
113
142
{ ( new ( 'c' ) , Style1 ) , ( new ( 'f' ) , Style1 ) , ( new ( 'i' ) , Style1 ) } ,
@@ -118,44 +147,67 @@ public void GetGlyph_ReturnsTheDefaultGlyph_IfNotFound()
118
147
}
119
148
120
149
[ TestMethod ]
121
- public void GetGlyph_ReturnsReplacesHardBlanksWithWhitespaces ( )
150
+ public void GetGlyphs_ReplacesHardBlanksWithWhitespaces ( )
122
151
{
123
- var glyph = _font . GetGlyph ( new ( 3 ) , Style1 ) ;
124
- var contents = glyph . GetContents ( ) ;
152
+ var header = Header with { Height = 1 , BaseLine = 1 , Attributes = FigletAttribute . HorizontalSmushing } ;
153
+ var font = new FigletFont ( "name" , header , new Dictionary < int , ( string [ ] rows , int width ) >
154
+ {
155
+ { 1 , ( new [ ] { "AB" } , 2 ) } ,
156
+ { 2 , ( new [ ] { "12" } , 2 ) }
157
+ } ) ;
125
158
126
- var cols = new [ , ] { { ( new Rune ( '1' ) , Style1 ) , ( new ( ' ' ) , Style1 ) , ( new ( '3' ) , Style1 ) } } ;
159
+ var k = new [ ] { new Rune ( 1 ) , new Rune ( 2 ) } ;
160
+
161
+ var glyphs = font . GetGlyphs ( k , Style1 ) ;
162
+ var contents = glyphs . GetContents ( ) ;
163
+
164
+ var cols = new [ , ]
165
+ {
166
+ { ( new Rune ( 'A' ) , Style1 ) } ,
167
+ { ( new ( '1' ) , Style1 ) } ,
168
+ { ( new ( '2' ) , Style1 ) }
169
+ } ;
127
170
128
171
contents . ShouldBe ( cols ) ;
129
172
}
130
-
173
+
174
+
131
175
[ TestMethod ]
132
- public void GetGlyph_ReturnsReplacementGlyph_IfNotFoundAndNoDefault_WithHeightGreaterThanOne ( )
176
+ public void GetGlyphs_MergesCharactersUsingLayoutRules ( )
133
177
{
134
- var font = new FigletFont ( "name" , Header , new Dictionary < int , ( string [ ] rows , int width ) > ( ) ) ;
135
-
136
- var glyph = font . GetGlyph ( new ( 2 ) , Style1 ) ;
178
+ var glyph = _font . GetGlyphs ( new [ ] { new Rune ( 3 ) } , Style1 ) ;
137
179
var contents = glyph . GetContents ( ) ;
138
180
139
181
var cols = new [ , ]
140
182
{
141
- { ( new ( '┌' ) , Style1 ) , ( new ( '│' ) , Style1 ) , ( new ( '└' ) , Style1 ) } ,
142
- { ( new ( '─' ) , Style1 ) , ( new ( ' ' ) , Style1 ) , ( new ( '─' ) , Style1 ) } ,
143
- { ( new ( '┐' ) , Style1 ) , ( new ( '│' ) , Style1 ) , ( new Rune ( '┘' ) , Style1 ) }
183
+ { ( new Rune ( '1' ) , Style1 ) , ( new ( ' ' ) , Style1 ) , ( new ( '3' ) , Style1 ) }
144
184
} ;
145
185
146
186
contents . ShouldBe ( cols ) ;
147
187
}
148
-
188
+
149
189
[ TestMethod ]
150
- public void GetGlyph_ReturnsReplacementGlyph_IfNotFoundAndNoDefault_WithWidthOfOne ( )
190
+ public void GetGlyphs_ReturnsChars_WithWidthOfOne ( )
151
191
{
152
192
var header = Header with { Height = 1 , BaseLine = 1 } ;
153
- var font = new FigletFont ( "name" , header , new Dictionary < int , ( string [ ] rows , int width ) > ( ) ) ;
193
+ var font = new FigletFont ( "name" , header ,
194
+ new Dictionary < int , ( string [ ] rows , int width ) > ( )
195
+ {
196
+ { 'A' , ( new [ ] { "A" } , 1 ) } ,
197
+ { 'B' , ( new [ ] { "B" } , 1 ) }
198
+ } ) ;
154
199
155
- var glyph = font . GetGlyph ( new ( 2 ) , Style1 ) ;
156
- var contents = glyph . GetContents ( ) ;
200
+ var k = new [ ] { new Rune ( 'A' ) , new Rune ( 256 ) , new Rune ( 'B' ) } ;
157
201
158
- var cols = new [ , ] { { ( new Rune ( '□' ) , Style1 ) } } ;
202
+ var glyphs = font . GetGlyphs ( k , Style1 ) ;
203
+ var contents = glyphs . GetContents ( ) ;
204
+
205
+ var cols = new [ , ]
206
+ {
207
+ { ( new Rune ( 'A' ) , Style1 ) } ,
208
+ { ( new Rune ( '□' ) , Style1 ) } ,
209
+ { ( new Rune ( 'B' ) , Style1 ) } ,
210
+ } ;
159
211
160
212
contents . ShouldBe ( cols ) ;
161
213
}
0 commit comments