blob: b6b5a490ca0b201636e8a89df314e6fd536047da [file]
// Copyright (c) 2026, 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:analyzer/dart/analysis/utilities.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
import '../../../tool/lsp_spec/codegen_dart.dart';
import '../../../tool/lsp_spec/meta_model.dart';
void main() {
defineReflectiveSuite(() {
defineReflectiveTests(CodegenTest);
});
}
@reflectiveTest
class CodegenTest {
void test_enumMembersNamedNew() {
var generatedCode = generateDartForTypes([
LspEnum(
name: 'x',
typeOfValues: TypeReference.int,
constants: [
Constant(name: 'new', type: TypeReference.string, value: '1'),
],
),
]);
// Verify the generated code parses with no errors.
parseString(content: generatedCode);
// Verify some expected code.
expect(generatedCode, contains('static const new_ = x(1)'));
}
void test_fieldsNamedDefault() {
var generatedCode = generateDartForTypes([
Interface(
name: 'x',
members: [
Field(
name: 'default',
type: TypeReference.string,
allowsNull: false,
allowsUndefined: true,
),
],
),
]);
// Verify the generated code parses with no errors.
parseString(content: generatedCode);
// Verify some expected code.
expect(generatedCode, contains('final String? defaultValue'));
expect(generatedCode, contains('this.defaultValue'));
expect(generatedCode, contains('defaultValue.hashCode'));
// JSON still uses the original protocol name.
expect(generatedCode, contains("result['default'] = defaultValue"));
expect(generatedCode, contains("defaultValueJson = json['default']"));
}
}