@@ -361,19 +361,20 @@ func TestExtendStdlibFunction(t *testing.T) {
361
361
}
362
362
363
363
func TestSubsetStdLib (t * testing.T ) {
364
- env , err := NewCustomEnv (StdLib (StdLibSubset (
365
- & env.LibrarySubset {
366
- IncludeMacros : []string {"has" },
367
- IncludeFunctions : []* env.Function {
368
- {Name : operators .Equals },
369
- {Name : operators .NotEquals },
370
- {Name : operators .LogicalAnd },
371
- {Name : operators .LogicalOr },
372
- {Name : operators .LogicalNot },
373
- {Name : overloads .Size , Overloads : []* env.Overload {{ID : "list_size" }}},
364
+ env , err := NewCustomEnv (
365
+ StdLib (StdLibSubset (
366
+ & env.LibrarySubset {
367
+ IncludeMacros : []string {"has" },
368
+ IncludeFunctions : []* env.Function {
369
+ {Name : operators .Equals },
370
+ {Name : operators .NotEquals },
371
+ {Name : operators .LogicalAnd },
372
+ {Name : operators .LogicalOr },
373
+ {Name : operators .LogicalNot },
374
+ {Name : overloads .Size , Overloads : []* env.Overload {{ID : "list_size" }}},
375
+ },
374
376
},
375
- },
376
- )))
377
+ )))
377
378
if err != nil {
378
379
t .Fatalf ("StdLib() subsetting failed: %v" , err )
379
380
}
@@ -443,6 +444,42 @@ func TestSubsetStdLib(t *testing.T) {
443
444
}
444
445
}
445
446
447
+ func TestSubsetStdLibError (t * testing.T ) {
448
+ _ , err := NewCustomEnv (
449
+ StdLib (StdLibSubset (
450
+ env .NewLibrarySubset ().AddIncludedMacros ("has" ).AddExcludedMacros ("exists" )),
451
+ ))
452
+ if err == nil || ! strings .Contains (err .Error (), "invalid subset" ) {
453
+ t .Errorf ("StdLib() subsetting got %v, wanted error 'invalid subset'" , err )
454
+ }
455
+ }
456
+
457
+ func TestSubsetStdLibMerge (t * testing.T ) {
458
+ _ , err := NewCustomEnv (
459
+ Function ("size" , MemberOverload ("string_size" , []* Type {StringType }, IntType )),
460
+ StdLib (StdLibSubset (
461
+ env .NewLibrarySubset ().AddIncludedFunctions ([]* env.Function {
462
+ {Name : overloads .Size , Overloads : []* env.Overload {{ID : "string_size" }}},
463
+ }... ),
464
+ )))
465
+ if err != nil {
466
+ t .Errorf ("StdLib() subsetting failed to merge: %v" , err )
467
+ }
468
+ }
469
+
470
+ func TestSubsetStdLibMergeError (t * testing.T ) {
471
+ _ , err := NewCustomEnv (
472
+ Function ("size" , MemberOverload ("string_size" , []* Type {StringType }, UintType )),
473
+ StdLib (StdLibSubset (
474
+ env .NewLibrarySubset ().AddIncludedFunctions ([]* env.Function {
475
+ {Name : overloads .Size , Overloads : []* env.Overload {{ID : "string_size" }}},
476
+ }... ),
477
+ )))
478
+ if err == nil || ! strings .Contains (err .Error (), "merge failed" ) {
479
+ t .Errorf ("StdLib() subsetting got %v, wanted error 'merge failed'" , err )
480
+ }
481
+ }
482
+
446
483
func TestCustomTypes (t * testing.T ) {
447
484
reg := types .NewEmptyRegistry ()
448
485
env := testEnv (t ,
0 commit comments