blob: a32ef3142048b1e8eb277fc5fc808dfcaf116e99 [file] [log] [blame] [edit]
// Copyright (c) 2025, 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.
import 'package:cfg/ir/source_position.dart';
import 'package:kernel/ast.dart' as ast;
import 'package:test/test.dart';
void main() {
test('simple', () {
final pos = SourcePosition(42);
expect(SourcePosition(42, inlineContextId: noInlineContext), equals(pos));
expect(SourcePosition(43), isNot(equals(pos)));
expect(noPosition, isNot(equals(pos)));
expect(pos.fileOffset, equals(42));
expect(pos.inlineContextId, equals(noInlineContext));
});
test('noOffset', () {
final pos = SourcePosition(ast.TreeNode.noOffset);
expect(
SourcePosition(ast.TreeNode.noOffset, inlineContextId: noInlineContext),
equals(pos),
);
expect(SourcePosition(0), isNot(equals(pos)));
expect(noPosition, isNot(equals(pos)));
expect(pos.fileOffset, equals(ast.TreeNode.noOffset));
});
test('inline context', () {
final ctx1 = InlineContextId(1);
final ctx2 = InlineContextId(2);
final pos1 = SourcePosition(42);
final pos2 = SourcePosition(42, inlineContextId: ctx1);
final pos3 = SourcePosition(42, inlineContextId: ctx2);
expect(pos1, isNot(equals(noPosition)));
expect(pos2, isNot(equals(noPosition)));
expect(pos3, isNot(equals(noPosition)));
expect(pos2, isNot(equals(pos1)));
expect(pos3, isNot(equals(pos1)));
expect(pos3, isNot(equals(pos2)));
expect(pos1.fileOffset, equals(42));
expect(pos2.fileOffset, equals(42));
expect(pos3.fileOffset, equals(42));
expect(pos1.inlineContextId, equals(noInlineContext));
expect(pos2.inlineContextId, equals(ctx1));
expect(pos3.inlineContextId, equals(ctx2));
});
}