1+ package software .amazon .smithy .typescript .codegen .util ;
2+
3+ import org .junit .jupiter .api .Test ;
4+
5+ import java .util .Objects ;
6+
7+ import static org .junit .jupiter .api .Assertions .*;
8+
9+ class StringStoreTest {
10+
11+ @ Test
12+ void var () {
13+ StringStore subject = new StringStore ();
14+ String sourceCode = """
15+ const array = [
16+ %s,
17+ %s,
18+ %s,
19+ %s,
20+ %s,
21+ %s,
22+ %s,
23+ %s,
24+ %s,
25+ %s,
26+ %s,
27+ %s,
28+ %s,
29+ %s,
30+ %s,
31+ %s,
32+ %s,
33+ %s,
34+ %s,
35+ %s,
36+ %s,
37+ %s,
38+ %s
39+ ];
40+ """ .formatted (
41+ subject .var ("SomeObject" ),
42+ subject .var ("some_object" ),
43+ subject .var ("SomeObject" ),
44+ subject .var ("some_object" ),
45+ subject .var ("_" ),
46+ subject .var ("__" ),
47+ subject .var ("___" ),
48+ subject .var ("_internal" ),
49+ subject .var ("__internal" ),
50+ subject .var ("___internal" ),
51+ subject .var ("_internal_" ),
52+ subject .var ("__internal__" ),
53+ subject .var ("___internal__" ),
54+ subject .var ("_two--words" ),
55+ subject .var ("__twoWords__" ),
56+ subject .var ("___TwoWords__" ),
57+ subject .var ("$Symbol" ),
58+ subject .var ("%Symbol" ),
59+ subject .var (" !)(@*#&$^% " ),
60+ subject .var (" !)( @ )(@*#&$^* SmithyTypeScript# &)(@*#&$^ $^% )(@*#&$^" ),
61+ subject .var ("**Ack**Ack**" ),
62+ subject .var ("Spaces Are Cool" ),
63+ subject .var ("__why Would &&& YouName $something this..." )
64+ );
65+
66+ String [] expected = """
67+ const _ = "_";
68+ const _AA = "**Ack**Ack**";
69+ const _S = "$Symbol";
70+ const _SAC = "Spaces Are Cool";
71+ const _SO = "SomeObject";
72+ const _S_ = " !)( @ )(@*#&$^* SmithyTypeScript# &)(@*#&$^ $^% )(@*#&$^";
73+ const _Sy = "%Symbol";
74+ const _TW = "___TwoWords__";
75+ const __ = "__";
76+ const ___ = "___";
77+ const ____ = " !)(@*#&$^% ";
78+ const _i = "_internal";
79+ const _in = "__internal";
80+ const _int = "___internal";
81+ const _inte = "_internal_";
82+ const _inter = "__internal__";
83+ const _intern = "___internal__";
84+ const _so = "some_object";
85+ const _tW = "__twoWords__";
86+ const _tw = "_two--words";
87+ const _wWYt = "__why Would &&& YouName $something this...";
88+
89+ const array = [
90+ _SO,
91+ _so,
92+ _SO,
93+ _so,
94+ _,
95+ __,
96+ ___,
97+ _i,
98+ _in,
99+ _int,
100+ _inte,
101+ _inter,
102+ _intern,
103+ _tw,
104+ _tW,
105+ _TW,
106+ _S,
107+ _Sy,
108+ ____,
109+ _S_,
110+ _AA,
111+ _SAC,
112+ _wWYt
113+ ];
114+ """ .split ("\n " );
115+ String [] actual = (subject .flushVariableDeclarationCode () + "\n "
116+ + sourceCode ).split ("\n " );
117+
118+ for (int i = 0 ; i < expected .length ; ++i ) {
119+ assertEquals (
120+ Objects .toString (i ) + ": " + expected [i ].trim (),
121+ Objects .toString (i ) + ": " + actual [i ].trim ()
122+ );
123+ }
124+ }
125+ }
0 commit comments