@@ -154,6 +154,27 @@ extension ExecutionTests {
154
154
155
155
extension ExecutionTests {
156
156
157
+ /// Tests that an error is thrown when an argument cannot be encoded.
158
+ func testHandleExpressionGenerationError( ) {
159
+
160
+ let value = NotSoEncodable ( name: " Error " )
161
+ let method = JSFunction < JSVoid > ( " tester.refresh " , arguments: [ value] )
162
+ let resultExpectation = expectation ( description: " Async execution callback is called " )
163
+
164
+ testInWebView ( expectations: [ resultExpectation] ) {
165
+ webView in
166
+
167
+ method. evaluate ( in: webView) {
168
+ result in
169
+ assert ( Thread . isMainThread)
170
+ resultExpectation. fulfill ( )
171
+ self . assertInvalidExpressionError ( result)
172
+ }
173
+
174
+ }
175
+
176
+ }
177
+
157
178
/// Tests that an error is thrown when a value is returned and Void is expected.
158
179
func testHandleUnexpectedReturnValue( ) {
159
180
@@ -674,144 +695,115 @@ extension ExecutionTests {
674
695
675
696
extension ExecutionTests {
676
697
677
- ///
678
- /// S'assure que le résultat est un succès contenant la valeur donnée.
679
- ///
680
-
698
+ /// Asserts that the result is a success containing the given value.
681
699
func assertSuccess< R: Equatable , E> ( _ result: Result < R , E > , expectedValue: R ) {
682
700
683
701
switch result {
684
702
case . success( let value) :
685
703
XCTAssertEqual ( value, expectedValue)
686
704
687
705
case . failure( let error) :
688
- XCTFail ( " Erreur innatendue : \( error) " )
706
+ XCTFail ( " Unexpected error : \( error) " )
689
707
}
690
708
691
709
}
692
710
693
- ///
694
- /// S'assure que le résultat est un succès contenant la valeur donnée.
695
- ///
696
-
697
- func assertSuccess< E> ( _ result: Result < Void , E > , expectedValue: Void ) {
698
-
699
- switch result {
700
- case . success( let value) :
701
- XCTAssertTrue ( value == ( ) )
702
-
703
- case . failure( let error) :
704
- XCTFail ( " Erreur innatendue : \( error) " )
705
- }
706
-
707
- }
708
-
709
- ///
710
- /// S'assure que le résultat est un succès contenant la valeur donnée.
711
- ///
712
-
711
+ /// Asserts that the result is a success containing the given value.
713
712
func assertSuccess< R: Equatable , E> ( _ result: Result < [ R ] , E > , expectedValue: Array < R > ) {
714
713
715
714
switch result {
716
715
case . success( let value) :
717
716
XCTAssertEqual ( value, expectedValue)
718
717
719
718
case . failure( let error) :
720
- XCTFail ( " Erreur innatendue : \( error) " )
719
+ XCTFail ( " Unexpected error : \( error) " )
721
720
}
722
721
723
722
}
724
723
725
- ///
726
- /// S'assure que le résultat est un échec de type causé par une mauvaise valeur donnée.
727
- ///
728
-
724
+ /// Asserts that the result is an invalid type error.
729
725
func assertInvalidTypeError< R, T: Equatable > ( _ result: Result < R , JSErrorDomain > , expectedFailingValue: T ) {
730
726
731
727
switch result {
732
728
case . success( _) :
733
- XCTFail ( " Une valeur a été retournée, alors qu'une erreur de type `invalidReturnType` était attendue ." )
729
+ XCTFail ( " A value was returned but an `invalidReturnType` error was expected ." )
734
730
735
731
case . failure( let error) :
736
732
737
733
switch error {
738
734
case . invalidReturnType( let value) :
739
- XCTAssertTrue ( ( value as? T ) == expectedFailingValue, " Une erreur de type a bien été retournée, mais la valeur posant problème ne correspond pas à celle attendue. " )
740
- XCTAssertEqual ( error. nsError. domain, JSErrorDomain . identifier, " L'erreur ne provient pas du domaine attendu. " )
735
+ XCTAssertTrue ( ( value as? T ) == expectedFailingValue, " A type error was thrown, but the associated value does not match the expected one. " )
736
+ XCTAssertEqual ( error. nsError. domain, JSErrorDomain . identifier, " Incorrect error domain. " )
737
+ XCTAssertEqual ( error. nsError. localizedDescription, error. errorDescription)
741
738
742
739
case . executionError( _) :
743
- XCTFail ( " Une erreur de type `executionError` a été retournée alors qu'une erreur de type `invalidReturnType` était attendue ." )
740
+ XCTFail ( " An `executionError` error was thrown, expected `invalidReturnType` error ." )
744
741
745
742
case . unexpectedResult:
746
- XCTFail ( " Une erreur de type `unexpectedResult` a été retournée alors qu'une erreur de type `invalidReturnType` était attendue ." )
743
+ XCTFail ( " An `unexpectedResult` error was thrown, expected `invalidReturnType` error ." )
747
744
748
745
case . invalidExpression( _) :
749
- XCTFail ( " Une erreur de type `invalidExpression` a été retournée alors qu'une erreur de type `invalidReturnType` était attendue. " )
750
-
746
+ XCTFail ( " An `invalidExpression` error was thrown, expected `invalidReturnType` error. " )
751
747
752
748
}
753
749
754
750
}
755
751
756
752
}
757
753
758
- ///
759
- /// S'assure que le résultat est un échec de type causé par une mauvaise valeur donnée.
760
- ///
761
-
754
+ /// Asserts that the result is an invalid type error.
762
755
func assertInvalidTypeError< R> ( _ result: Result < [ R ] , JSErrorDomain > , expectedFailingValue: [ Any ] ) {
763
756
764
757
switch result {
765
758
case . success( _) :
766
- XCTFail ( " Une valeur a été retournée, alors qu'une erreur de type `invalidReturnType` était attendue ." )
759
+ XCTFail ( " A value was returned but an `invalidReturnType` error was expected ." )
767
760
768
761
case . failure( let error) :
769
762
770
763
switch error {
771
764
case . invalidReturnType( let value) :
772
- XCTAssertTrue ( ( value as? NSArray ) ? . isEqual ( to: expectedFailingValue) == true , " Une erreur de type a bien été retournée, mais la valeur posant problème ne correspond pas à celle attendue. " )
773
- XCTAssertEqual ( error. nsError. domain, JSErrorDomain . identifier, " L'erreur ne provient pas du domaine attendu. " )
765
+ XCTAssertTrue ( ( value as? NSArray ) ? . isEqual ( to: expectedFailingValue) == true , " A type error was thrown, but the associated value does not match the expected one. " )
766
+ XCTAssertEqual ( error. nsError. domain, JSErrorDomain . identifier, " Incorrect error domain. " )
767
+ XCTAssertEqual ( error. nsError. localizedDescription, error. errorDescription)
774
768
775
769
case . executionError( _) :
776
- XCTFail ( " Une erreur de type `executionError` a été retournée alors qu'une erreur de type `invalidReturnType` était attendue ." )
770
+ XCTFail ( " An `executionError` error was thrown, expected `invalidReturnType` error ." )
777
771
778
772
case . unexpectedResult:
779
- XCTFail ( " Une erreur de type `unexpectedResult` a été retournée alors qu'une erreur de type `invalidReturnType` était attendue ." )
773
+ XCTFail ( " An `unexpectedResult` error was thrown, expected `invalidReturnType` error ." )
780
774
781
775
case . invalidExpression( _) :
782
- XCTFail ( " Une erreur de type `unexpectedResult` a été retournée alors qu'une erreur de type `invalidExpression` était attendue ." )
776
+ XCTFail ( " An `unexpectedResult` error was thrown, expected `invalidExpression` error ." )
783
777
784
778
}
785
779
786
780
}
787
781
788
782
}
789
783
790
- ///
791
- /// S'assure que le résultat est un échec de type causé par une mauvaise valeur donnée.
792
- ///
793
-
784
+ /// Asserts that the result is an invalid type error.
794
785
func assertInvalidTypeError< R> ( _ result: Result < R , JSErrorDomain > , expectedFailingValue: [ AnyHashable : Any ] ) {
795
786
796
787
switch result {
797
788
case . success( _) :
798
- XCTFail ( " Une valeur a été retournée, alors qu'une erreur de type `invalidReturnType` était attendue ." )
789
+ XCTFail ( " A value was returned but an `invalidReturnType` error was expected ." )
799
790
800
791
case . failure( let error) :
801
792
802
793
switch error {
803
794
case . invalidReturnType( let value) :
804
- XCTAssertTrue ( ( value as? NSDictionary ) ? . isEqual ( to: expectedFailingValue) == true , " Une erreur de type a bien été retournée, mais la valeur posant problème ne correspond pas à celle attendue. " )
805
- XCTAssertEqual ( error. nsError. domain, JSErrorDomain . identifier, " L'erreur ne provient pas du domaine attendu. " )
795
+ XCTAssertTrue ( ( value as? NSDictionary ) ? . isEqual ( to: expectedFailingValue) == true , " A type error was thrown, but the associated value does not match the expected one. " )
796
+ XCTAssertEqual ( error. nsError. domain, JSErrorDomain . identifier, " Incorrect error domain. " )
797
+ XCTAssertEqual ( error. nsError. localizedDescription, error. errorDescription)
806
798
807
799
case . executionError( _) :
808
- XCTFail ( " Une erreur de type `executionError` a été retournée alors qu'une erreur de type `invalidReturnType` était attendue ." )
800
+ XCTFail ( " An `executionError` error was thrown, expected `invalidReturnType` error ." )
809
801
810
802
case . unexpectedResult:
811
- XCTFail ( " Une erreur de type `unexpectedResult` a été retournée alors qu'une erreur de type `invalidReturnType` était attendue ." )
803
+ XCTFail ( " An `unexpectedResult` error was thrown, expected `invalidReturnType` error ." )
812
804
813
805
case . invalidExpression( _) :
814
- XCTFail ( " Une erreur de type `invalidExpression` a été retournée alors qu'une erreur de type `invalidReturnType` était attendue ." )
806
+ XCTFail ( " An `invalidExpression` error was thrown, expected `invalidReturnType` error ." )
815
807
816
808
817
809
}
@@ -821,61 +813,87 @@ extension ExecutionTests {
821
813
}
822
814
823
815
824
- ///
825
- /// S'assure que le résultat est un échec contenant le type donnée.
826
- ///
827
-
816
+ /// Asserts that the result is an execution error.
828
817
func assertExecutionError< R> ( _ result: Result < R , JSErrorDomain > ) {
829
818
830
819
switch result {
831
820
case . success( _) :
832
- XCTFail ( " Une valeur a été retournée, alors qu'une erreur de type `executionError` était attendue ." )
821
+ XCTFail ( " A value was returned but an `executionError` error was expected ." )
833
822
834
823
case . failure( let error) :
835
824
836
825
switch error {
837
826
case . invalidReturnType( _) :
838
- XCTFail ( " Une erreur de type `invalidReturnType` a été retournée alors qu'une erreur de type `executionError` était attendue ." )
827
+ XCTFail ( " An `invalidReturnType` error was thrown, expected `executionError` error ." )
839
828
840
829
case . executionError( _) :
841
- XCTAssertEqual ( error. nsError. domain, JSErrorDomain . identifier, " L'erreur ne provient pas du domaine attendu. " )
830
+ XCTAssertEqual ( error. nsError. domain, JSErrorDomain . identifier, " Incorrect error. " )
831
+ XCTAssertEqual ( error. nsError. localizedDescription, error. errorDescription)
842
832
843
833
case . unexpectedResult:
844
- XCTFail ( " Une erreur de type `unexpectedResult` a été retournée alors qu'une erreur de type `executionError` était attendue ." )
834
+ XCTFail ( " An `unexpectedResult` error was thrown, expected `executionError` error ." )
845
835
846
836
case . invalidExpression( _) :
847
- XCTFail ( " Une erreur de type `invalidExpression` a été retournée alors qu'une erreur de type `executionError` était attendue ." )
837
+ XCTFail ( " An `invalidExpression` error was thrown, expected `executionError` error ." )
848
838
849
839
}
850
840
851
841
}
852
842
853
843
}
854
844
855
- ///
856
- /// S'assure que le résultat est un échec contenant le type donnée.
857
- ///
858
-
845
+ /// Asserts that the result is an unexpected result error.
859
846
func assertUnexpectedResultError< R> ( _ result: Result < R , JSErrorDomain > ) {
860
847
861
848
switch result {
862
849
case . success( _) :
863
- XCTFail ( " Une valeur a été retournée, alors qu'une erreur de type `unexpectedResult` était attendue ." )
850
+ XCTFail ( " A value was returned but an `unexpectedResult` error was expected ." )
864
851
865
852
case . failure( let error) :
866
853
867
854
switch error {
868
855
case . invalidReturnType( _) :
869
- XCTFail ( " Une erreur de type `invalidReturnType` a été retournée alors qu'une erreur de type `unexpectedResult` était attendue ." )
856
+ XCTFail ( " An `invalidReturnType` error was thrown, expected `unexpectedResult` error ." )
870
857
871
858
case . executionError( _) :
872
- XCTFail ( " Une erreur de type `executionError` a été retournée alors qu'une erreur de type `unexpectedResult` était attendue ." )
859
+ XCTFail ( " An `executionError` error was thrown, expected `unexpectedResult` error ." )
873
860
874
861
case . unexpectedResult:
875
- XCTAssertEqual ( error. nsError. domain, JSErrorDomain . identifier, " L'erreur ne provient pas du domaine attendu. " )
862
+ XCTAssertEqual ( error. nsError. domain, JSErrorDomain . identifier, " Incorrect error domain. " )
863
+ XCTAssertEqual ( error. nsError. localizedDescription, error. errorDescription)
876
864
877
865
case . invalidExpression( _) :
878
- XCTFail ( " Une erreur de type `invalidExpression` a été retournée alors qu'une erreur de type `unexpectedResult` était attendue. " )
866
+ XCTFail ( " An `invalidExpression` error was thrown, expected `unexpectedResult` error. " )
867
+
868
+ }
869
+
870
+ }
871
+
872
+ }
873
+
874
+ /// Asserts that the result is an invalid expression error.
875
+ func assertInvalidExpressionError< R> ( _ result: Result < R , JSErrorDomain > ) {
876
+
877
+ switch result {
878
+ case . success( _) :
879
+ XCTFail ( " A value was returned but an `invalidExpression` error was expected. " )
880
+
881
+ case . failure( let error) :
882
+
883
+ switch error {
884
+ case . invalidReturnType( _) :
885
+ XCTFail ( " An `invalidReturnType` error was thrown, expected`invalidExpression` error. " )
886
+
887
+ case . executionError( _) :
888
+ XCTFail ( " An `executionError` error was thrown, expected `invalidExpression` error. " )
889
+
890
+ case . unexpectedResult:
891
+ XCTFail ( " An `unexpectedResult` error was thrown, expected `invalidExpression` error. " )
892
+
893
+ case . invalidExpression( let underlyingError) :
894
+ XCTAssertEqual ( error. nsError. domain, JSErrorDomain . identifier)
895
+ XCTAssertEqual ( underlyingError. domain, NSCocoaErrorDomain)
896
+ XCTAssertEqual ( error. nsError. localizedDescription, error. errorDescription)
879
897
880
898
}
881
899
0 commit comments