// Copyright 2014 The Flutter Authors. 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:file/file.dart';
import 'package:file/memory.dart';
import 'package:flutter_tools/src/base/logger.dart';
import 'package:flutter_tools/src/isolated/mustache_template.dart';
import 'package:flutter_tools/src/template.dart';

import '../../src/common.dart';

void main() {
  testWithoutContext('kotlin reserved keywords', () {
    final FileSystem fileSystem = MemoryFileSystem.test();
    final logger = BufferLogger.test();
    final Directory rootDir = fileSystem.currentDirectory;
    final Directory templateSource = rootDir.childDirectory('src');
    final imageSourceDir = templateSource;
    final Directory destination = rootDir.childDirectory('dest');

    const outputClass = 'SomeClass.kt';

    final File sourceFile = templateSource.childFile('$outputClass.tmpl');

    templateSource.createSync();
    sourceFile.writeAsStringSync('package {{androidIdentifier}};');

    final template = Template(
      templateSource,
      imageSourceDir,
      fileSystem: fileSystem,
      logger: logger,
      templateRenderer: const MustacheTemplateRenderer(),
    );

    final context = <String, Object>{'androidIdentifier': 'is.in.when.there'};
    template.render(destination, context);

    final File destinationFile = destination.childFile(outputClass);
    expect(destinationFile.readAsStringSync(), equals('package `is`.`in`.`when`.there;'));
  });
}
