Files
sdk/pkg/analysis_server/test/computer/error_test.dart
T
paulberry@google.com 245168938e Merge analysis server's mocks.dart and mocks2.dart into one file.
There were competing implementations of MockAnalysisContext and
MockSource, but one of the implementations was only used in one place
(analysis_server_test.dart), so it's been switched over to use the
other implementation.

R=scheglov@google.com

Review URL: https://codereview.chromium.org//532333002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39826 260f80e4-7a28-3924-810f-c04153c831b5
2014-09-03 19:45:42 +00:00

123 lines
3.3 KiB
Dart

// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
library test.computer.error;
import 'package:analysis_server/src/computer/error.dart';
import 'package:analysis_server/src/protocol.dart';
import 'package:analysis_server/src/constants.dart';
import '../mocks.dart';
import '../reflective_tests.dart';
import 'package:analyzer/src/generated/error.dart' as engine;
import 'package:analyzer/src/generated/source.dart';
import 'package:typed_mock/typed_mock.dart';
import 'package:unittest/unittest.dart';
main() {
groupSep = ' | ';
runReflectiveTests(AnalysisErrorTest);
}
class AnalysisErrorMock extends TypedMock implements engine.AnalysisError {
noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
}
@ReflectiveTestCase()
class AnalysisErrorTest {
Source source = new MockSource();
LineInfo lineInfo;
engine.AnalysisError engineError = new AnalysisErrorMock();
void setUp() {
// prepare Source
when(source.fullName).thenReturn('foo.dart');
// prepare LineInfo
lineInfo = new LineInfo([0, 5, 9, 20]);
// prepare AnalysisError
when(engineError.source).thenReturn(source);
when(
engineError.errorCode).thenReturn(engine.CompileTimeErrorCode.AMBIGUOUS_EXPORT);
when(engineError.message).thenReturn('my message');
when(engineError.offset).thenReturn(10);
when(engineError.length).thenReturn(20);
}
void tearDown() {
source = null;
engineError = null;
}
void test_fromEngine_hasCorrection() {
when(engineError.correction).thenReturn('my correction');
AnalysisError error = new AnalysisError.fromEngine(lineInfo, engineError);
expect(error.toJson(), {
SEVERITY: 'ERROR',
TYPE: 'COMPILE_TIME_ERROR',
LOCATION: {
FILE: 'foo.dart',
OFFSET: 10,
LENGTH: 20,
START_LINE: 3,
START_COLUMN: 2
},
MESSAGE: 'my message',
CORRECTION: 'my correction'
});
}
void test_fromEngine_noCorrection() {
when(engineError.correction).thenReturn(null);
AnalysisError error = new AnalysisError.fromEngine(lineInfo, engineError);
expect(error.toJson(), {
SEVERITY: 'ERROR',
TYPE: 'COMPILE_TIME_ERROR',
LOCATION: {
FILE: 'foo.dart',
OFFSET: 10,
LENGTH: 20,
START_LINE: 3,
START_COLUMN: 2
},
MESSAGE: 'my message'
});
}
void test_fromEngine_noLineInfo() {
when(engineError.correction).thenReturn(null);
AnalysisError error = new AnalysisError.fromEngine(null, engineError);
expect(error.toJson(), {
SEVERITY: 'ERROR',
TYPE: 'COMPILE_TIME_ERROR',
LOCATION: {
FILE: 'foo.dart',
OFFSET: 10,
LENGTH: 20,
START_LINE: -1,
START_COLUMN: -1
},
MESSAGE: 'my message'
});
}
void test_engineErrorsToJson() {
var json = engineErrorsToJson(lineInfo, [engineError]);
expect(json, unorderedEquals([{
'severity': 'ERROR',
'type': 'COMPILE_TIME_ERROR',
'location': {
'file': 'foo.dart',
'offset': 10,
'length': 20,
'startLine': 3,
'startColumn': 2
},
'message': 'my message'
}]));
}
}