245168938e
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
123 lines
3.3 KiB
Dart
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'
|
|
}]));
|
|
}
|
|
}
|