@@ -354,3 +354,85 @@ fn validate_name_format() {
354
354
) ) ;
355
355
}
356
356
}
357
+
358
+ #[ test]
359
+ fn suggest_valid_names ( ) {
360
+ assert_eq ! (
361
+ crate :: new:: suggest_valid_name(
362
+ "gleam_" ,
363
+ & crate :: new:: InvalidProjectNameReason :: GleamPrefix
364
+ ) ,
365
+ None
366
+ ) ;
367
+ assert_eq ! (
368
+ crate :: new:: suggest_valid_name(
369
+ "gleam_project" ,
370
+ & crate :: new:: InvalidProjectNameReason :: GleamPrefix
371
+ ) ,
372
+ Some ( "project" . to_string( ) )
373
+ ) ;
374
+
375
+ assert_eq ! (
376
+ crate :: new:: suggest_valid_name(
377
+ "try" ,
378
+ & crate :: new:: InvalidProjectNameReason :: ErlangReservedWord
379
+ ) ,
380
+ Some ( "try_app" . to_string( ) )
381
+ ) ;
382
+
383
+ assert_eq ! (
384
+ crate :: new:: suggest_valid_name(
385
+ "erl_eval" ,
386
+ & crate :: new:: InvalidProjectNameReason :: ErlangStandardLibraryModule
387
+ ) ,
388
+ Some ( "erl_eval_app" . to_string( ) )
389
+ ) ;
390
+
391
+ assert_eq ! (
392
+ crate :: new:: suggest_valid_name(
393
+ "assert" ,
394
+ & crate :: new:: InvalidProjectNameReason :: GleamReservedWord
395
+ ) ,
396
+ Some ( "assert_app" . to_string( ) )
397
+ ) ;
398
+
399
+ assert_eq ! (
400
+ crate :: new:: suggest_valid_name(
401
+ "gleam" ,
402
+ & crate :: new:: InvalidProjectNameReason :: GleamReservedModule
403
+ ) ,
404
+ None
405
+ ) ;
406
+
407
+ assert_eq ! (
408
+ crate :: new:: suggest_valid_name(
409
+ "Project_Name" ,
410
+ & crate :: new:: InvalidProjectNameReason :: FormatNotLowercase
411
+ ) ,
412
+ Some ( "project_name" . to_string( ) )
413
+ ) ;
414
+
415
+ assert_eq ! (
416
+ crate :: new:: suggest_valid_name(
417
+ "Pr0ject-n4me!" ,
418
+ & crate :: new:: InvalidProjectNameReason :: Format
419
+ ) ,
420
+ Some ( "pr0ject_n4me_" . to_string( ) )
421
+ ) ;
422
+
423
+ assert_eq ! (
424
+ crate :: new:: suggest_valid_name(
425
+ "Pr0ject--n4me!" ,
426
+ & crate :: new:: InvalidProjectNameReason :: Format
427
+ ) ,
428
+ Some ( "pr0ject_n4me_" . to_string( ) )
429
+ ) ;
430
+
431
+ assert_eq ! (
432
+ crate :: new:: suggest_valid_name(
433
+ "_pr0ject-name" ,
434
+ & crate :: new:: InvalidProjectNameReason :: Format
435
+ ) ,
436
+ None
437
+ ) ;
438
+ }
0 commit comments