@@ -4452,12 +4452,14 @@ func TestPutByte(t *testing.T) {
44524452}
44534453
44544454func TestPutChar (t * testing.T ) {
4455+ ResetStreamIDCounter ()
4456+
44554457 tests := []struct {
44564458 title string
44574459 streamOrAlias func () (Term , func (* testing.T ))
44584460 char Term
44594461 ok bool
4460- err error
4462+ err func ( Term ) error
44614463 }{
44624464 // 8.12.3.4 Examples
44634465 {title : "put_char(t)" , streamOrAlias : func () (Term , func (* testing.T )) {
@@ -4478,34 +4480,34 @@ func TestPutChar(t *testing.T) {
44784480 // 8.12.3.3 Errors
44794481 {title : "a" , streamOrAlias : func () (Term , func (* testing.T )) {
44804482 return NewVariable (), nil
4481- }, char : NewAtom ("a" ), err : InstantiationError (nil )},
4483+ }, char : NewAtom ("a" ), err : func ( Term ) error { return InstantiationError (nil ) } },
44824484 {title : "b" , streamOrAlias : func () (Term , func (* testing.T )) {
44834485 return NewOutputTextStream (nil ), nil
4484- }, char : NewVariable (), err : InstantiationError (nil )},
4486+ }, char : NewVariable (), err : func ( Term ) error { return InstantiationError (nil ) } },
44854487 {title : "b: atom but not one-char" , streamOrAlias : func () (Term , func (* testing.T )) {
44864488 return NewOutputTextStream (nil ), nil
4487- }, char : NewAtom ("foo" ), err : typeError (validTypeCharacter , NewAtom ("foo" ), nil )},
4489+ }, char : NewAtom ("foo" ), err : func ( Term ) error { return typeError (validTypeCharacter , NewAtom ("foo" ), nil ) } },
44884490 {title : "b: not even atom" , streamOrAlias : func () (Term , func (* testing.T )) {
44894491 return NewOutputTextStream (nil ), nil
4490- }, char : Integer (1 ), err : typeError (validTypeCharacter , Integer (1 ), nil )},
4492+ }, char : Integer (1 ), err : func ( Term ) error { return typeError (validTypeCharacter , Integer (1 ), nil ) } },
44914493 {title : "f" , streamOrAlias : func () (Term , func (* testing.T )) {
44924494 return Integer (1 ), nil
4493- }, char : NewAtom ("a" ), err : domainError (validDomainStreamOrAlias , Integer (1 ), nil )},
4495+ }, char : NewAtom ("a" ), err : func ( Term ) error { return domainError (validDomainStreamOrAlias , Integer (1 ), nil ) } },
44944496 {title : "g" , streamOrAlias : func () (Term , func (* testing.T )) {
44954497 return NewAtom ("foo" ), nil
4496- }, char : NewAtom ("a" ), err : existenceError (objectTypeStream , NewAtom ("foo" ), nil )},
4498+ }, char : NewAtom ("a" ), err : func ( Term ) error { return existenceError (objectTypeStream , NewAtom ("foo" ), nil ) } },
44974499 {title : "h" , streamOrAlias : func () (Term , func (* testing.T )) {
44984500 return NewInputTextStream (nil ), nil
4499- }, char : NewAtom ("a" ), err : permissionError (operationOutput , permissionTypeStream , NewInputTextStream ( nil ) , nil )},
4501+ }, char : NewAtom ("a" ), err : func ( s Term ) error { return permissionError (operationOutput , permissionTypeStream , s , nil ) } },
45004502 {title : "i" , streamOrAlias : func () (Term , func (* testing.T )) {
45014503 return NewOutputBinaryStream (nil ), nil
4502- }, char : NewAtom ("a" ), err : permissionError (operationOutput , permissionTypeBinaryStream , NewOutputBinaryStream ( nil ) , nil )},
4504+ }, char : NewAtom ("a" ), err : func ( s Term ) error { return permissionError (operationOutput , permissionTypeBinaryStream , s , nil ) } },
45034505
45044506 {title : "error on write" , streamOrAlias : func () (Term , func (* testing.T )) {
45054507 var m mockWriter
45064508 m .On ("Write" , mock .Anything ).Return (0 , errors .New ("failed" ))
45074509 return NewOutputTextStream (& m ), nil
4508- }, char : NewAtom ("a" ), err : errors .New ("failed" )},
4510+ }, char : NewAtom ("a" ), err : func ( Term ) error { return errors .New ("failed" ) } },
45094511 }
45104512
45114513 for _ , tt := range tests {
@@ -4518,7 +4520,11 @@ func TestPutChar(t *testing.T) {
45184520 var vm VM
45194521 ok , err := PutChar (& vm , sOrA , tt .char , Success , nil ).Force (context .Background ())
45204522 assert .Equal (t , tt .ok , ok )
4521- assert .Equal (t , tt .err , err )
4523+ if tt .err != nil {
4524+ assert .Equal (t , tt .err (sOrA ), err )
4525+ } else {
4526+ assert .NoError (t , err )
4527+ }
45224528 })
45234529 }
45244530}
0 commit comments