| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library test.protocol; | 5 library test.protocol; |
| 6 | 6 |
| 7 import 'dart:convert'; | 7 import 'dart:convert'; |
| 8 | 8 |
| 9 import 'package:analysis_server/src/protocol.dart'; | 9 import 'package:analysis_server/src/protocol.dart'; |
| 10 import 'package:analysis_services/json.dart'; | 10 import 'package:analysis_services/json.dart'; |
| 11 import 'package:analysis_testing/reflective_tests.dart'; | 11 import 'package:analysis_testing/reflective_tests.dart'; |
| 12 import 'package:unittest/unittest.dart'; | 12 import 'package:unittest/unittest.dart'; |
| 13 | 13 |
| 14 | 14 |
| 15 Matcher _throwsRequestFailure = throwsA(new isInstanceOf<RequestFailure>()); | 15 Matcher _throwsRequestFailure = throwsA(new isInstanceOf<RequestFailure>()); |
| 16 | 16 |
| 17 | 17 |
| 18 main() { | 18 main() { |
| 19 groupSep = ' | '; | 19 groupSep = ' | '; |
| 20 runReflectiveTests(NotificationTest); | 20 runReflectiveTests(NotificationTest); |
| 21 runReflectiveTests(RequestTest); | 21 runReflectiveTests(RequestTest); |
| 22 runReflectiveTests(RequestErrorTest); | 22 runReflectiveTests(RequestErrorTest); |
| 23 runReflectiveTests(RequestDatumTest); | 23 runReflectiveTests(RequestDatumTest); |
| 24 runReflectiveTests(ResponseTest); | 24 runReflectiveTests(ResponseTest); |
| 25 } | 25 } |
| 26 | 26 |
| 27 | 27 |
| 28 @ReflectiveTestCase() | 28 @ReflectiveTestCase() |
| 29 class InvalidParameterResponseMatcher extends Matcher { | 29 class InvalidParameterResponseMatcher extends Matcher { |
| 30 static const int ERROR_CODE = -2; | 30 static const String ERROR_CODE = 'INVALID_PARAMETER'; |
| 31 | 31 |
| 32 @override | 32 @override |
| 33 Description describe(Description description) => description.add( | 33 Description describe(Description description) => description.add( |
| 34 "an 'invalid parameter' response (code $ERROR_CODE)"); | 34 "an 'invalid parameter' response (code $ERROR_CODE)"); |
| 35 | 35 |
| 36 @override | 36 @override |
| 37 bool matches(item, Map matchState) { | 37 bool matches(item, Map matchState) { |
| 38 if (item is! RequestFailure) { | 38 if (item is! RequestFailure) { |
| 39 return false; | 39 return false; |
| 40 } | 40 } |
| (...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 389 | 389 |
| 390 static RequestDatum makeDatum(dynamic datum) { | 390 static RequestDatum makeDatum(dynamic datum) { |
| 391 return new RequestDatum(request, 'myPath', datum); | 391 return new RequestDatum(request, 'myPath', datum); |
| 392 } | 392 } |
| 393 } | 393 } |
| 394 | 394 |
| 395 | 395 |
| 396 @ReflectiveTestCase() | 396 @ReflectiveTestCase() |
| 397 class RequestErrorTest { | 397 class RequestErrorTest { |
| 398 void test_create() { | 398 void test_create() { |
| 399 RequestError error = new RequestError(42, 'msg'); | 399 RequestError error = new RequestError('ERROR_CODE', 'msg'); |
| 400 expect(error.code, 42); | 400 expect(error.code, 'ERROR_CODE'); |
| 401 expect(error.message, "msg"); | 401 expect(error.message, "msg"); |
| 402 expect(error.toJson(), equals({ | 402 expect(error.toJson(), equals({ |
| 403 RequestError.CODE: 42, | 403 RequestError.CODE: 'ERROR_CODE', |
| 404 RequestError.MESSAGE: "msg" | 404 RequestError.MESSAGE: "msg" |
| 405 })); | 405 })); |
| 406 } | 406 } |
| 407 | 407 |
| 408 void test_create_internalError() { | 408 void test_create_internalError() { |
| 409 RequestError error = new RequestError.internalError(); | 409 RequestError error = new RequestError.internalError(); |
| 410 expect(error.code, RequestError.CODE_INTERNAL_ERROR); | 410 expect(error.code, RequestError.CODE_INTERNAL_ERROR); |
| 411 expect(error.message, "Internal error"); | 411 expect(error.message, "Internal error"); |
| 412 } | 412 } |
| 413 | 413 |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 450 } | 450 } |
| 451 }; | 451 }; |
| 452 RequestError error = new RequestError.fromJson(json); | 452 RequestError error = new RequestError.fromJson(json); |
| 453 expect(error.code, RequestError.CODE_PARSE_ERROR); | 453 expect(error.code, RequestError.CODE_PARSE_ERROR); |
| 454 expect(error.message, "foo"); | 454 expect(error.message, "foo"); |
| 455 expect(error.data['ints'], [1, 2, 3]); | 455 expect(error.data['ints'], [1, 2, 3]); |
| 456 expect(error.getData('ints'), [1, 2, 3]); | 456 expect(error.getData('ints'), [1, 2, 3]); |
| 457 } | 457 } |
| 458 | 458 |
| 459 void test_toJson() { | 459 void test_toJson() { |
| 460 RequestError error = new RequestError(0, 'msg'); | 460 RequestError error = new RequestError('ERROR_CODE', 'msg'); |
| 461 error.setData('answer', 42); | 461 error.setData('answer', 42); |
| 462 error.setData('question', 'unknown'); | 462 error.setData('question', 'unknown'); |
| 463 expect(error.toJson(), { | 463 expect(error.toJson(), { |
| 464 RequestError.CODE: 0, | 464 RequestError.CODE: 'ERROR_CODE', |
| 465 RequestError.MESSAGE: 'msg', | 465 RequestError.MESSAGE: 'msg', |
| 466 RequestError.DATA: { | 466 RequestError.DATA: { |
| 467 'answer': 42, | 467 'answer': 42, |
| 468 'question': 'unknown' | 468 'question': 'unknown' |
| 469 } | 469 } |
| 470 }); | 470 }); |
| 471 } | 471 } |
| 472 } | 472 } |
| 473 | 473 |
| 474 | 474 |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 580 | 580 |
| 581 @ReflectiveTestCase() | 581 @ReflectiveTestCase() |
| 582 class ResponseTest { | 582 class ResponseTest { |
| 583 void test_create_contextDoesNotExist() { | 583 void test_create_contextDoesNotExist() { |
| 584 Response response = new Response.contextDoesNotExist(new Request('0', '')); | 584 Response response = new Response.contextDoesNotExist(new Request('0', '')); |
| 585 expect(response.id, equals('0')); | 585 expect(response.id, equals('0')); |
| 586 expect(response.error, isNotNull); | 586 expect(response.error, isNotNull); |
| 587 expect(response.toJson(), equals({ | 587 expect(response.toJson(), equals({ |
| 588 Response.ID: '0', | 588 Response.ID: '0', |
| 589 Response.ERROR: { | 589 Response.ERROR: { |
| 590 'code': -1, | 590 'code': 'NONEXISTENT_CONTEXT', |
| 591 'message': 'Context does not exist' | 591 'message': 'Context does not exist' |
| 592 } | 592 } |
| 593 })); | 593 })); |
| 594 } | 594 } |
| 595 | 595 |
| 596 void test_create_invalidRequestFormat() { | 596 void test_create_invalidRequestFormat() { |
| 597 Response response = new Response.invalidRequestFormat(); | 597 Response response = new Response.invalidRequestFormat(); |
| 598 expect(response.id, equals('')); | 598 expect(response.id, equals('')); |
| 599 expect(response.error, isNotNull); | 599 expect(response.error, isNotNull); |
| 600 expect(response.toJson(), equals({ | 600 expect(response.toJson(), equals({ |
| 601 Response.ID: '', | 601 Response.ID: '', |
| 602 Response.ERROR: { | 602 Response.ERROR: { |
| 603 'code': -4, | 603 'code': 'INVALID_REQUEST', |
| 604 'message': 'Invalid request' | 604 'message': 'Invalid request' |
| 605 } | 605 } |
| 606 })); | 606 })); |
| 607 } | 607 } |
| 608 | 608 |
| 609 void test_create_missingRequiredParameter() { | 609 void test_create_missingRequiredParameter() { |
| 610 Response response = new Response.missingRequiredParameter(new Request('0', | 610 Response response = new Response.missingRequiredParameter(new Request('0', |
| 611 ''), 'x'); | 611 ''), 'x'); |
| 612 expect(response.id, equals('0')); | 612 expect(response.id, equals('0')); |
| 613 expect(response.error, isNotNull); | 613 expect(response.error, isNotNull); |
| 614 expect(response.toJson(), equals({ | 614 expect(response.toJson(), equals({ |
| 615 Response.ID: '0', | 615 Response.ID: '0', |
| 616 Response.ERROR: { | 616 Response.ERROR: { |
| 617 'code': -5, | 617 'code': 'MISSING_PARAMETER', |
| 618 'message': 'Missing required parameter: x' | 618 'message': 'Missing required parameter: x' |
| 619 } | 619 } |
| 620 })); | 620 })); |
| 621 } | 621 } |
| 622 | 622 |
| 623 void test_create_unanalyzedPriorityFiles() { | 623 void test_create_unanalyzedPriorityFiles() { |
| 624 Response response = new Response.unanalyzedPriorityFiles(new Request('0', | 624 Response response = new Response.unanalyzedPriorityFiles(new Request('0', |
| 625 ''), 'file list'); | 625 ''), 'file list'); |
| 626 expect(response.id, equals('0')); | 626 expect(response.id, equals('0')); |
| 627 expect(response.error, isNotNull); | 627 expect(response.error, isNotNull); |
| 628 expect(response.toJson(), equals({ | 628 expect(response.toJson(), equals({ |
| 629 Response.ID: '0', | 629 Response.ID: '0', |
| 630 Response.ERROR: { | 630 Response.ERROR: { |
| 631 'code': -11, | 631 'code': 'UNANALYZED_PRIORITY_FILES', |
| 632 'message': "Unanalyzed files cannot be a priority: 'file list'" | 632 'message': "Unanalyzed files cannot be a priority: 'file list'" |
| 633 } | 633 } |
| 634 })); | 634 })); |
| 635 } | 635 } |
| 636 | 636 |
| 637 void test_create_unknownAnalysisOption() { | 637 void test_create_unknownAnalysisOption() { |
| 638 Response response = new Response.unknownAnalysisOption(new Request('0', ''), | 638 Response response = new Response.unknownAnalysisOption(new Request('0', ''), |
| 639 'x'); | 639 'x'); |
| 640 expect(response.id, equals('0')); | 640 expect(response.id, equals('0')); |
| 641 expect(response.error, isNotNull); | 641 expect(response.error, isNotNull); |
| 642 expect(response.toJson(), equals({ | 642 expect(response.toJson(), equals({ |
| 643 Response.ID: '0', | 643 Response.ID: '0', |
| 644 Response.ERROR: { | 644 Response.ERROR: { |
| 645 'code': -6, | 645 'code': 'UNKNOWN_ANALYSIS_OPTION', |
| 646 'message': 'Unknown analysis option: "x"' | 646 'message': 'Unknown analysis option: "x"' |
| 647 } | 647 } |
| 648 })); | 648 })); |
| 649 } | 649 } |
| 650 | 650 |
| 651 void test_create_unknownRequest() { | 651 void test_create_unknownRequest() { |
| 652 Response response = new Response.unknownRequest(new Request('0', '')); | 652 Response response = new Response.unknownRequest(new Request('0', '')); |
| 653 expect(response.id, equals('0')); | 653 expect(response.id, equals('0')); |
| 654 expect(response.error, isNotNull); | 654 expect(response.error, isNotNull); |
| 655 expect(response.toJson(), equals({ | 655 expect(response.toJson(), equals({ |
| 656 Response.ID: '0', | 656 Response.ID: '0', |
| 657 Response.ERROR: { | 657 Response.ERROR: { |
| 658 'code': -7, | 658 'code': 'UNKNOWN_REQUEST', |
| 659 'message': 'Unknown request' | 659 'message': 'Unknown request' |
| 660 } | 660 } |
| 661 })); | 661 })); |
| 662 } | 662 } |
| 663 | 663 |
| 664 void test_fromJson() { | 664 void test_fromJson() { |
| 665 Response original = new Response('myId'); | 665 Response original = new Response('myId'); |
| 666 Response response = new Response.fromJson(original.toJson()); | 666 Response response = new Response.fromJson(original.toJson()); |
| 667 expect(response.id, equals('myId')); | 667 expect(response.id, equals('myId')); |
| 668 } | 668 } |
| 669 | 669 |
| 670 void test_fromJson_withError() { | 670 void test_fromJson_withError() { |
| 671 Response original = new Response.invalidRequestFormat(); | 671 Response original = new Response.invalidRequestFormat(); |
| 672 Response response = new Response.fromJson(original.toJson()); | 672 Response response = new Response.fromJson(original.toJson()); |
| 673 expect(response.id, equals('')); | 673 expect(response.id, equals('')); |
| 674 expect(response.error, isNotNull); | 674 expect(response.error, isNotNull); |
| 675 RequestError error = response.error; | 675 RequestError error = response.error; |
| 676 expect(error.code, equals(-4)); | 676 expect(error.code, equals('INVALID_REQUEST')); |
| 677 expect(error.message, equals('Invalid request')); | 677 expect(error.message, equals('Invalid request')); |
| 678 } | 678 } |
| 679 | 679 |
| 680 void test_fromJson_withResult() { | 680 void test_fromJson_withResult() { |
| 681 Response original = new Response('myId'); | 681 Response original = new Response('myId'); |
| 682 original.setResult('foo', 'bar'); | 682 original.setResult('foo', 'bar'); |
| 683 Response response = new Response.fromJson(original.toJson()); | 683 Response response = new Response.fromJson(original.toJson()); |
| 684 expect(response.id, equals('myId')); | 684 expect(response.id, equals('myId')); |
| 685 Map<String, Object> result = response.result; | 685 Map<String, Object> result = response.result; |
| 686 expect(result.length, equals(1)); | 686 expect(result.length, equals(1)); |
| 687 expect(result['foo'], equals('bar')); | 687 expect(result['foo'], equals('bar')); |
| 688 } | 688 } |
| 689 | 689 |
| 690 void test_setResult() { | 690 void test_setResult() { |
| 691 String resultName = 'name'; | 691 String resultName = 'name'; |
| 692 String resultValue = 'value'; | 692 String resultValue = 'value'; |
| 693 Response response = new Response('0'); | 693 Response response = new Response('0'); |
| 694 response.setResult(resultName, resultValue); | 694 response.setResult(resultName, resultValue); |
| 695 expect(response.getResult(resultName), same(resultValue)); | 695 expect(response.getResult(resultName), same(resultValue)); |
| 696 expect(response.toJson(), equals({ | 696 expect(response.toJson(), equals({ |
| 697 Response.ID: '0', | 697 Response.ID: '0', |
| 698 Response.RESULT: { | 698 Response.RESULT: { |
| 699 resultName: resultValue | 699 resultName: resultValue |
| 700 } | 700 } |
| 701 })); | 701 })); |
| 702 } | 702 } |
| 703 } | 703 } |
| OLD | NEW |