1
1
using System ;
2
- using System . Collections . Generic ;
3
2
using System . Threading . Tasks ;
3
+ using CSharpMath . Atom ;
4
4
using CSharpMath . CoreTests . FrontEnd ;
5
5
using Xunit ;
6
6
@@ -32,18 +32,18 @@ public async Task Test() {
32
32
var outer = Assert . IsType < Atom . Atoms . Placeholder > ( Assert . Single ( keyboard . MathList ) ) ;
33
33
var inner = Assert . IsType < Atom . Atoms . Placeholder > ( Assert . Single ( outer . Superscript ) ) ;
34
34
Assert . Equal ( MathKeyboardCaretState . ShownThroughPlaceholder , keyboard . CaretState ) ;
35
- Assert . Equal ( " \u25A1 " , outer . Nucleus ) ;
36
- Assert . Equal ( " \u25A0 " , inner . Nucleus ) ;
35
+ Assert . Equal ( DefaultPlaceholderSettings . RestingNucleus , outer . Nucleus ) ;
36
+ Assert . Equal ( DefaultPlaceholderSettings . ActiveNucleus , inner . Nucleus ) ;
37
37
38
38
await Task . Delay ( ( int ) MathKeyboard < TestFont , char > . DefaultBlinkMilliseconds + CaretBlinks . MillisecondBuffer ) ;
39
39
Assert . Equal ( MathKeyboardCaretState . TemporarilyHidden , keyboard . CaretState ) ;
40
- Assert . Equal ( " \u25A1 " , outer . Nucleus ) ;
41
- Assert . Equal ( " \u25A1 " , inner . Nucleus ) ;
40
+ Assert . Equal ( DefaultPlaceholderSettings . RestingNucleus , outer . Nucleus ) ;
41
+ Assert . Equal ( DefaultPlaceholderSettings . RestingNucleus , inner . Nucleus ) ;
42
42
43
43
await Task . Delay ( ( int ) MathKeyboard < TestFont , char > . DefaultBlinkMilliseconds + CaretBlinks . MillisecondBuffer ) ;
44
44
Assert . Equal ( MathKeyboardCaretState . ShownThroughPlaceholder , keyboard . CaretState ) ;
45
- Assert . Equal ( " \u25A1 " , outer . Nucleus ) ;
46
- Assert . Equal ( " \u25A0 " , inner . Nucleus ) ;
45
+ Assert . Equal ( DefaultPlaceholderSettings . RestingNucleus , outer . Nucleus ) ;
46
+ Assert . Equal ( DefaultPlaceholderSettings . ActiveNucleus , inner . Nucleus ) ;
47
47
}
48
48
}
49
49
public class CaretMovesWithPlaceholder {
@@ -58,20 +58,20 @@ public async Task Test() {
58
58
var outer = Assert . IsType < Atom . Atoms . Placeholder > ( Assert . Single ( keyboard . MathList ) ) ;
59
59
var inner = Assert . IsType < Atom . Atoms . Placeholder > ( Assert . Single ( outer . Subscript ) ) ;
60
60
Assert . Equal ( MathKeyboardCaretState . ShownThroughPlaceholder , keyboard . CaretState ) ;
61
- Assert . Equal ( " \u25A1 " , outer . Nucleus ) ;
62
- Assert . Equal ( " \u25A0 " , inner . Nucleus ) ;
61
+ Assert . Equal ( DefaultPlaceholderSettings . RestingNucleus , outer . Nucleus ) ;
62
+ Assert . Equal ( DefaultPlaceholderSettings . ActiveNucleus , inner . Nucleus ) ;
63
63
64
64
await Task . Delay ( ( int ) MathKeyboard < TestFont , char > . DefaultBlinkMilliseconds + CaretBlinks . MillisecondBuffer ) ;
65
65
Assert . Equal ( MathKeyboardCaretState . TemporarilyHidden , keyboard . CaretState ) ;
66
66
keyboard . KeyPress ( MathKeyboardInput . Left ) ;
67
67
Assert . Equal ( MathKeyboardCaretState . ShownThroughPlaceholder , keyboard . CaretState ) ;
68
- Assert . Equal ( " \u25A0 " , outer . Nucleus ) ;
69
- Assert . Equal ( " \u25A1 " , inner . Nucleus ) ;
68
+ Assert . Equal ( DefaultPlaceholderSettings . ActiveNucleus , outer . Nucleus ) ;
69
+ Assert . Equal ( DefaultPlaceholderSettings . RestingNucleus , inner . Nucleus ) ;
70
70
71
71
Assert . Equal ( MathKeyboardCaretState . ShownThroughPlaceholder , keyboard . CaretState ) ;
72
72
keyboard . KeyPress ( MathKeyboardInput . Right ) ;
73
- Assert . Equal ( " \u25A1 " , outer . Nucleus ) ;
74
- Assert . Equal ( " \u25A0 " , inner . Nucleus ) ;
73
+ Assert . Equal ( DefaultPlaceholderSettings . RestingNucleus , outer . Nucleus ) ;
74
+ Assert . Equal ( DefaultPlaceholderSettings . ActiveNucleus , inner . Nucleus ) ;
75
75
}
76
76
}
77
77
public class CaretStaysHidden {
@@ -176,4 +176,101 @@ public async Task Test() {
176
176
Assert . Equal ( MathKeyboardCaretState . Shown , keyboard . CaretState ) ;
177
177
}
178
178
}
179
+ public class DefaultPlaceholderSettings {
180
+ public const string ActiveNucleus = "■" ;
181
+ public const string RestingNucleus = "□" ;
182
+ public static readonly System . Drawing . Color ? ActiveColor = null ;
183
+ public static readonly System . Drawing . Color ? RestingColor = null ;
184
+ }
185
+ [ CollectionDefinition ( nameof ( NonParallelPlaceholderTests ) , DisableParallelization = true ) ]
186
+ public class NonParallelPlaceholderTests { }
187
+ [ Collection ( nameof ( NonParallelPlaceholderTests ) ) ]
188
+ public class DefaultPlaceholder {
189
+ [ Fact ]
190
+ public void LaTeXSettingsPlaceholderIsNewInstance ( ) {
191
+ Assert . NotSame ( LaTeXSettings . Placeholder , LaTeXSettings . Placeholder ) ;
192
+ // Double check, also verify that its contents are 'fresh':
193
+ LaTeXSettings . Placeholder . Nucleus = "x" ;
194
+ Assert . Equal ( DefaultPlaceholderSettings . RestingNucleus , LaTeXSettings . Placeholder . Nucleus ) ;
195
+ LaTeXSettings . Placeholder . Color = System . Drawing . Color . Green ;
196
+ Assert . Equal ( DefaultPlaceholderSettings . RestingColor , LaTeXSettings . Placeholder . Color ) ;
197
+ }
198
+ [ Fact ]
199
+ public void DefaultPlaceholderAppearance ( ) {
200
+ Assert . Null ( LaTeXSettings . PlaceholderActiveColor ) ;
201
+ Assert . Null ( LaTeXSettings . PlaceholderRestingColor ) ;
202
+ Assert . Equal ( DefaultPlaceholderSettings . ActiveNucleus , LaTeXSettings . PlaceholderActiveNucleus ) ;
203
+ Assert . Equal ( DefaultPlaceholderSettings . RestingNucleus , LaTeXSettings . PlaceholderRestingNucleus ) ;
204
+ Assert . Equal ( LaTeXSettings . PlaceholderRestingNucleus , LaTeXSettings . Placeholder . Nucleus ) ;
205
+ Assert . Equal ( LaTeXSettings . PlaceholderRestingColor , LaTeXSettings . Placeholder . Color ) ;
206
+ }
207
+ }
208
+ [ Collection ( nameof ( NonParallelPlaceholderTests ) ) ]
209
+ public class CustomizablePlaceholder : IDisposable {
210
+ public CustomizablePlaceholder ( ) {
211
+ LaTeXSettings . PlaceholderActiveNucleus = "😀" ;
212
+ LaTeXSettings . PlaceholderRestingNucleus = "😐" ;
213
+ LaTeXSettings . PlaceholderActiveColor = System . Drawing . Color . Green ;
214
+ LaTeXSettings . PlaceholderRestingColor = System . Drawing . Color . Blue ;
215
+ }
216
+ public void Dispose ( ) {
217
+ LaTeXSettings . PlaceholderActiveNucleus = DefaultPlaceholderSettings . ActiveNucleus ;
218
+ LaTeXSettings . PlaceholderRestingNucleus = DefaultPlaceholderSettings . RestingNucleus ;
219
+ LaTeXSettings . PlaceholderActiveColor = DefaultPlaceholderSettings . ActiveColor ;
220
+ LaTeXSettings . PlaceholderRestingColor = DefaultPlaceholderSettings . RestingColor ;
221
+ }
222
+ [ Fact ]
223
+ public async Task CustomizedPlaceholderBlinks ( ) {
224
+ var keyboard = new MathKeyboard < TestFont , char > ( TestTypesettingContexts . Instance , new TestFont ( ) ) {
225
+ CaretState = MathKeyboardCaretState . Shown
226
+ } ;
227
+ Assert . Equal ( MathKeyboardCaretState . Shown , keyboard . CaretState ) ;
228
+
229
+ keyboard . KeyPress ( MathKeyboardInput . Subscript ) ;
230
+ var outer = Assert . IsType < Atom . Atoms . Placeholder > ( Assert . Single ( keyboard . MathList ) ) ;
231
+ var inner = Assert . IsType < Atom . Atoms . Placeholder > ( Assert . Single ( outer . Subscript ) ) ;
232
+ Assert . Equal ( MathKeyboardCaretState . ShownThroughPlaceholder , keyboard . CaretState ) ;
233
+ Assert . Equal ( "😐" , outer . Nucleus ) ;
234
+ Assert . Equal ( System . Drawing . Color . Blue , outer . Color ) ;
235
+ Assert . Equal ( "😀" , inner . Nucleus ) ;
236
+ Assert . Equal ( System . Drawing . Color . Green , inner . Color ) ;
237
+
238
+ await Task . Delay ( ( int ) MathKeyboard < TestFont , char > . DefaultBlinkMilliseconds + CaretBlinks . MillisecondBuffer ) ;
239
+ Assert . Equal ( MathKeyboardCaretState . TemporarilyHidden , keyboard . CaretState ) ;
240
+ Assert . Equal ( "😐" , outer . Nucleus ) ;
241
+ Assert . Equal ( System . Drawing . Color . Blue , outer . Color ) ;
242
+ Assert . Equal ( "😐" , inner . Nucleus ) ;
243
+ Assert . Equal ( System . Drawing . Color . Blue , inner . Color ) ;
244
+
245
+ await Task . Delay ( ( int ) MathKeyboard < TestFont , char > . DefaultBlinkMilliseconds + CaretBlinks . MillisecondBuffer ) ;
246
+ Assert . Equal ( MathKeyboardCaretState . ShownThroughPlaceholder , keyboard . CaretState ) ;
247
+ Assert . Equal ( "😐" , outer . Nucleus ) ;
248
+ Assert . Equal ( System . Drawing . Color . Blue , outer . Color ) ;
249
+ Assert . Equal ( "😀" , inner . Nucleus ) ;
250
+ Assert . Equal ( System . Drawing . Color . Green , inner . Color ) ;
251
+ }
252
+ [ Fact ]
253
+ public void AllCustomizablePlaceholderPropertiesAreResetOnCaretVisible ( ) {
254
+ var keyboard = new MathKeyboard < TestFont , char > ( TestTypesettingContexts . Instance , new TestFont ( ) ) {
255
+ CaretState = MathKeyboardCaretState . Shown
256
+ } ;
257
+ Assert . Equal ( MathKeyboardCaretState . Shown , keyboard . CaretState ) ;
258
+ keyboard . KeyPress ( MathKeyboardInput . Subscript ) ;
259
+ var outer = Assert . IsType < Atom . Atoms . Placeholder > ( Assert . Single ( keyboard . MathList ) ) ;
260
+ var inner = Assert . IsType < Atom . Atoms . Placeholder > ( Assert . Single ( outer . Subscript ) ) ;
261
+ Assert . Equal ( MathKeyboardCaretState . ShownThroughPlaceholder , keyboard . CaretState ) ;
262
+
263
+ keyboard . InsertionIndex = MathListIndex . Level0Index ( keyboard . MathList . Count ) ;
264
+ Assert . Equal ( MathKeyboardCaretState . Shown , keyboard . CaretState ) ;
265
+ Assert . Equal ( LaTeXSettings . PlaceholderRestingNucleus , outer . Nucleus ) ;
266
+ Assert . Equal ( LaTeXSettings . PlaceholderRestingColor , outer . Color ) ;
267
+ Assert . Equal ( LaTeXSettings . PlaceholderRestingNucleus , inner . Nucleus ) ;
268
+ Assert . Equal ( LaTeXSettings . PlaceholderRestingColor , inner . Color ) ;
269
+ }
270
+ [ Fact ]
271
+ public void CustomizedPlaceholderGetter ( ) {
272
+ Assert . Equal ( "😐" , LaTeXSettings . Placeholder . Nucleus ) ;
273
+ Assert . Equal ( System . Drawing . Color . Blue , LaTeXSettings . Placeholder . Color ) ;
274
+ }
275
+ }
179
276
}
0 commit comments