@@ -65,3 +65,160 @@ func TestGetMemory(t *testing.T) {
6565 })
6666 }
6767}
68+
69+ func TestMemoryConverterImpl (t * testing.T ) {
70+ tests := []struct {
71+ name string
72+ input interface {}
73+ expected string
74+ expectError bool
75+ }{
76+ {
77+ name : "valid memory size - 2G" ,
78+ input : "2G" ,
79+ expected : "2048mb" ,
80+ expectError : false ,
81+ },
82+ {
83+ name : "valid memory size - 1024mb" ,
84+ input : "1024mb" ,
85+ expected : "1024mb" ,
86+ expectError : false ,
87+ },
88+ {
89+ name : "max case" ,
90+ input : lib .Max ,
91+ expected : lib .Max ,
92+ expectError : false ,
93+ },
94+ {
95+ name : "no limit case" ,
96+ input : lib .NoLimit ,
97+ expected : lib .NoLimit ,
98+ expectError : false ,
99+ },
100+ {
101+ name : "non-string input" ,
102+ input : 123 ,
103+ expected : "" ,
104+ expectError : true ,
105+ },
106+ {
107+ name : "invalid memory size" ,
108+ input : "invalid" ,
109+ expected : "" ,
110+ expectError : true ,
111+ },
112+ {
113+ name : "empty string" ,
114+ input : "" ,
115+ expected : "" ,
116+ expectError : true ,
117+ },
118+ }
119+
120+ for _ , tt := range tests {
121+ t .Run (tt .name , func (t * testing.T ) {
122+ result , err := MemoryConverterImpl (tt .input )
123+
124+ if tt .expectError {
125+ assert .Error (t , err )
126+ } else {
127+ assert .NoError (t , err )
128+ assert .Equal (t , tt .expected , result )
129+ }
130+ })
131+ }
132+ }
133+
134+ func TestMemoryValidatorImpl (t * testing.T ) {
135+ tests := []struct {
136+ name string
137+ input interface {}
138+ expectError bool
139+ }{
140+ {
141+ name : "valid memory size - 2G" ,
142+ input : "2G" ,
143+ expectError : false ,
144+ },
145+ {
146+ name : "valid memory size - 1024mb" ,
147+ input : "1024mb" ,
148+ expectError : false ,
149+ },
150+ {
151+ name : "max case" ,
152+ input : lib .Max ,
153+ expectError : false ,
154+ },
155+ {
156+ name : "no limit case" ,
157+ input : lib .NoLimit ,
158+ expectError : false ,
159+ },
160+ {
161+ name : "non-string input" ,
162+ input : 123 ,
163+ expectError : true ,
164+ },
165+ {
166+ name : "invalid memory size" ,
167+ input : "invalid" ,
168+ expectError : true ,
169+ },
170+ {
171+ name : "negative memory size" ,
172+ input : "-1G" ,
173+ expectError : true ,
174+ },
175+ {
176+ name : "empty string" ,
177+ input : "" ,
178+ expectError : true ,
179+ },
180+ }
181+
182+ for _ , tt := range tests {
183+ t .Run (tt .name , func (t * testing.T ) {
184+ err := MemoryValidatorImpl (tt .input )
185+
186+ if tt .expectError {
187+ assert .Error (t , err )
188+ } else {
189+ assert .NoError (t , err )
190+ }
191+ })
192+ }
193+ }
194+
195+ func TestMemoryConverter (t * testing.T ) {
196+ converter := MemoryConverter ()
197+
198+ // Test normal case
199+ result := converter ("2G" )
200+ assert .Equal (t , "2048mb" , result )
201+
202+ // Test special cases
203+ assert .Equal (t , lib .Max , converter (lib .Max ))
204+ assert .Equal (t , lib .NoLimit , converter (lib .NoLimit ))
205+
206+ // Test panic case
207+ assert .Panics (t , func () {
208+ converter (123 ) // non-string input should panic
209+ })
210+ }
211+
212+ func TestMemoryValidator (t * testing.T ) {
213+ validator := MemoryValidator ()
214+
215+ // Test valid cases
216+ assert .Nil (t , validator ("2G" , nil ))
217+ assert .Nil (t , validator (lib .Max , nil ))
218+ assert .Nil (t , validator (lib .NoLimit , nil ))
219+
220+ // Test invalid cases
221+ assert .NotNil (t , validator (123 , nil )) // non-string input
222+ assert .NotNil (t , validator ("invalid" , nil )) // invalid memory size
223+ assert .NotNil (t , validator ("" , nil )) // empty string
224+ }
0 commit comments