@@ -46,9 +46,28 @@ fn test_sample_c_tokens() {
4646 assert_eq ! ( next_token( ) , Token :: IntLiteral ( 1 ) ) ;
4747 assert_eq ! ( next_token( ) , Token :: Semicolon ) ;
4848
49- // todo
5049 // for (int i = 1; i <= n; ++i) {
50+ assert_eq ! ( next_token( ) , Token :: For ) ;
51+ assert_eq ! ( next_token( ) , Token :: LParen ) ;
52+ assert_eq ! ( next_token( ) , Token :: Int ) ;
53+ assert_eq ! ( next_token( ) , Token :: Ident ( "i" . into( ) ) ) ;
54+ assert_eq ! ( next_token( ) , Token :: Assign ) ;
55+ assert_eq ! ( next_token( ) , Token :: IntLiteral ( 1 ) ) ;
56+ assert_eq ! ( next_token( ) , Token :: Semicolon ) ;
57+ assert_eq ! ( next_token( ) , Token :: Ident ( "i" . into( ) ) ) ;
58+ assert_eq ! ( next_token( ) , Token :: Le ) ;
59+ assert_eq ! ( next_token( ) , Token :: Ident ( "n" . into( ) ) ) ;
60+ assert_eq ! ( next_token( ) , Token :: Semicolon ) ;
61+ assert_eq ! ( next_token( ) , Token :: Increment ) ;
62+ assert_eq ! ( next_token( ) , Token :: Ident ( "i" . into( ) ) ) ;
63+ assert_eq ! ( next_token( ) , Token :: RParen ) ;
64+ assert_eq ! ( next_token( ) , Token :: LBrace ) ;
65+
5166 // result *= i;
67+ assert_eq ! ( next_token( ) , Token :: Ident ( "result" . into( ) ) ) ;
68+ assert_eq ! ( next_token( ) , Token :: AsteriskAssign ) ;
69+ assert_eq ! ( next_token( ) , Token :: Ident ( "i" . into( ) ) ) ;
70+ assert_eq ! ( next_token( ) , Token :: Semicolon ) ;
5271
5372 // }
5473 assert_eq ! ( next_token( ) , Token :: RBrace ) ;
@@ -184,23 +203,22 @@ fn test_sample_c_tokens() {
184203 assert_eq ! ( next_token( ) , Token :: RBracket ) ;
185204 assert_eq ! ( next_token( ) , Token :: Semicolon ) ;
186205
187- // todo
188206 // for (int i = 0; i < 3; i++) {
189- // assert_eq!(next_token(), Token::For);
190- // assert_eq!(next_token(), Token::LParen);
191- // assert_eq!(next_token(), Token::Int);
192- // assert_eq!(next_token(), Token::Ident("i".into()));
193- // assert_eq!(next_token(), Token::Assign);
194- // assert_eq!(next_token(), Token::IntLiteral(0));
195- // assert_eq!(next_token(), Token::Semicolon);
196- // assert_eq!(next_token(), Token::Ident("i".into()));
197- // assert_eq!(next_token(), Token::Lt);
198- // assert_eq!(next_token(), Token::IntLiteral(3));
199- // assert_eq!(next_token(), Token::Semicolon);
200- // assert_eq!(next_token(), Token::Ident("i".into()));
201- // assert_eq!(next_token(), Token::PlusPlus );
202- // assert_eq!(next_token(), Token::RParen);
203- // assert_eq!(next_token(), Token::LBrace);
207+ assert_eq ! ( next_token( ) , Token :: For ) ;
208+ assert_eq ! ( next_token( ) , Token :: LParen ) ;
209+ assert_eq ! ( next_token( ) , Token :: Int ) ;
210+ assert_eq ! ( next_token( ) , Token :: Ident ( "i" . into( ) ) ) ;
211+ assert_eq ! ( next_token( ) , Token :: Assign ) ;
212+ assert_eq ! ( next_token( ) , Token :: IntLiteral ( 0 ) ) ;
213+ assert_eq ! ( next_token( ) , Token :: Semicolon ) ;
214+ assert_eq ! ( next_token( ) , Token :: Ident ( "i" . into( ) ) ) ;
215+ assert_eq ! ( next_token( ) , Token :: Lt ) ;
216+ assert_eq ! ( next_token( ) , Token :: IntLiteral ( 3 ) ) ;
217+ assert_eq ! ( next_token( ) , Token :: Semicolon ) ;
218+ assert_eq ! ( next_token( ) , Token :: Ident ( "i" . into( ) ) ) ;
219+ assert_eq ! ( next_token( ) , Token :: Increment ) ;
220+ assert_eq ! ( next_token( ) , Token :: RParen ) ;
221+ assert_eq ! ( next_token( ) , Token :: LBrace ) ;
204222
205223 // arr2[i] = i * 2;
206224 assert_eq ! ( next_token( ) , Token :: Ident ( "arr2" . into( ) ) ) ;
@@ -216,12 +234,35 @@ fn test_sample_c_tokens() {
216234 // }
217235 assert_eq ! ( next_token( ) , Token :: RBrace ) ;
218236
219- // todo
220237 // *p += 10;
238+ assert_eq ! ( next_token( ) , Token :: Asterisk ) ;
239+ assert_eq ! ( next_token( ) , Token :: Ident ( "p" . into( ) ) ) ;
240+ assert_eq ! ( next_token( ) , Token :: PlusAssign ) ;
241+ assert_eq ! ( next_token( ) , Token :: IntLiteral ( 10 ) ) ;
242+ assert_eq ! ( next_token( ) , Token :: Semicolon ) ;
243+
221244 // x -= 5;
245+ assert_eq ! ( next_token( ) , Token :: Ident ( "x" . into( ) ) ) ;
246+ assert_eq ! ( next_token( ) , Token :: MinusAssign ) ;
247+ assert_eq ! ( next_token( ) , Token :: IntLiteral ( 5 ) ) ;
248+ assert_eq ! ( next_token( ) , Token :: Semicolon ) ;
249+
222250 // x++;
251+ assert_eq ! ( next_token( ) , Token :: Ident ( "x" . into( ) ) ) ;
252+ assert_eq ! ( next_token( ) , Token :: Increment ) ;
253+ assert_eq ! ( next_token( ) , Token :: Semicolon ) ;
223254 // ++x;
255+ assert_eq ! ( next_token( ) , Token :: Increment ) ;
256+ assert_eq ! ( next_token( ) , Token :: Ident ( "x" . into( ) ) ) ;
257+ assert_eq ! ( next_token( ) , Token :: Semicolon ) ;
224258 // --x;
259+ assert_eq ! ( next_token( ) , Token :: Decrement ) ;
260+ assert_eq ! ( next_token( ) , Token :: Ident ( "x" . into( ) ) ) ;
261+ assert_eq ! ( next_token( ) , Token :: Semicolon ) ;
262+ // x--
263+ assert_eq ! ( next_token( ) , Token :: Ident ( "x" . into( ) ) ) ;
264+ assert_eq ! ( next_token( ) , Token :: Decrement ) ;
265+ assert_eq ! ( next_token( ) , Token :: Semicolon ) ;
225266
226267 // if (x > 10 && x < 100) {
227268 assert_eq ! ( next_token( ) , Token :: If ) ;
@@ -318,11 +359,10 @@ fn test_sample_c_tokens() {
318359 assert_eq ! ( next_token( ) , Token :: RParen ) ;
319360 assert_eq ! ( next_token( ) , Token :: LBrace ) ;
320361
321- // todo
322- // count++;
323- // assert_eq!(next_token(), Token::Ident("count".into()));
324- // assert_eq!(next_token(), Token::PlusPlus);
325- // assert_eq!(next_token(), Token::Semicolon);
362+ // count++;
363+ assert_eq ! ( next_token( ) , Token :: Ident ( "count" . into( ) ) ) ;
364+ assert_eq ! ( next_token( ) , Token :: Increment ) ;
365+ assert_eq ! ( next_token( ) , Token :: Semicolon ) ;
326366
327367 // continue;
328368 assert_eq ! ( next_token( ) , Token :: Continue ) ;
@@ -345,8 +385,11 @@ fn test_sample_c_tokens() {
345385
346386 assert_eq ! ( next_token( ) , Token :: RBrace ) ;
347387
348- // todo
349388 // count += 1;
389+ assert_eq ! ( next_token( ) , Token :: Ident ( "count" . into( ) ) ) ;
390+ assert_eq ! ( next_token( ) , Token :: PlusAssign ) ;
391+ assert_eq ! ( next_token( ) , Token :: IntLiteral ( 1 ) ) ;
392+ assert_eq ! ( next_token( ) , Token :: Semicolon ) ;
350393
351394 // }
352395 assert_eq ! ( next_token( ) , Token :: RBrace ) ;
0 commit comments