anchor.diff:    });
   
     group('Setters', () {
  -    test('happy path', () {
  -      _standardFlutterDirectoryL10nSetup(fs);
  -      expect(() {
  -        final LocalizationsGenerator generator = LocalizationsGenerator(fs);
  -        generator.initialize(
  -          l10nDirectoryPath: defaultArbPathString,
  -          templateArbFileName: defaultTemplateArbFileName,
  -          outputFileString: defaultOutputFileString,
  -          classNameString: defaultClassNameString,
  -        );
  -      }, returnsNormally);
  -    });
  -
       test('setL10nDirectory fails if the directory does not exist', () {
         final LocalizationsGenerator generator = LocalizationsGenerator(fs);
         try {
  
positive.code:   }
  ''');
        });
  
        test('correctly generates simple message with multiple dates', () {
          const String singleDateMessageArbFileString = '''{
    "springRange": "Spring begins on {springStartDate} and ends on {springEndDate}",
    "@springRange": {
        "description": "The range of dates for spring in the year",
        "placeholders": {
            "springStartDate": {
                "type": "DateTime",
                "format": "yMMMMEEEEd"
            },
            "springEndDate": {
                "type": "DateTime",
                "format": "yMMMMEEEEd"
            }
        }
    }
  }''';
          final Directory l10nDirectory = fs.currentDirectory.childDirectory('lib').childDirectory('l10n')
            ..createSync(recursive: true);
          l10nDirectory.childFile(defaultTemplateArbFileName)
            .writeAsStringSync(singleDateMessageArbFileString);
  
          final LocalizationsGenerator generator = LocalizationsGenerator(fs);
          try {
            generator.initialize(
              l10nDirectoryPath: defaultArbPathString,
              templateArbFileName: defaultTemplateArbFileName,
              outputFileString: defaultOutputFileString,
              classNameString: defaultClassNameString,
            );
            generator.parseArbFiles();
            generator.generateClassMethods();
          } on Exception catch (e) {
            fail('Parsing template arb file should succeed: \n$e');
          }
  
          expect(generator.classMethods, isNotEmpty);
          expect(
            generator.classMethods.first,
            '''
    String springRange(DateTime springStartDate, DateTime springEndDate) {
      final DateFormat springStartDateDateFormat = DateFormat.yMMMMEEEEd(_localeName);
      final String springStartDateString = springStartDateDateFormat.format(springStartDate);
  
      final DateFormat springEndDateDateFormat = DateFormat.yMMMMEEEEd(_localeName);
      final String springEndDateString = springEndDateDateFormat.format(springEndDate);
  
      String springRange(Object springStartDate, Object springEndDate) {
        return Intl.message(
          'Spring begins on \${springStartDate} and ends on \${springEndDate}',
          locale: _localeName,
          name: 'springRange',
          desc: 'The range of dates for spring in the year',
          args: <Object>[springStartDate, springEndDate]
        );
      }
      return springRange(springStartDateString, springEndDateString);
    }
  ''');
        });
  
        test('correctly generates a plural message with DateTime placeholders', () {
          const String pluralMessageWithDateTimePlaceholder = '''{
      "helloWorlds": "{count,plural, =1{Hello World, today is {currentDate}}=2{Hello two worlds, today is {currentDate}}many{Hello all {count} worlds, today is {currentDate}}other{Hello other {count} worlds, today is {currentDate}}}",
    "@helloWorlds": {
      "placeholders": {
        "count": {},
        "currentDate": {
          "type": "DateTime",
          "format": "yMMMMEEEEd"
        }
      }
    }
  }''';
          final Directory l10nDirectory = fs.currentDirectory.childDirectory('lib').childDirectory('l10n')
            ..createSync(recursive: true);
          l10nDirectory.childFile(defaultTemplateArbFileName)
            .writeAsStringSync(pluralMessageWithDateTimePlaceholder);
  
          final LocalizationsGenerator generator = LocalizationsGenerator(fs);
          try {
            generator.initialize(
              l10nDirectoryPath: defaultArbPathString,
              templateArbFileName: defaultTemplateArbFileName,
              outputFileString: defaultOutputFileString,
              classNameString: defaultClassNameString,
            );
            generator.parseArbFiles();
            generator.generateClassMethods();
          } on Exception catch (e) {
            fail('Parsing template arb file should succeed: \n$e');
          }
  
          expect(generator.classMethods, isNotEmpty);
          expect(
            generator.classMethods.first,
            r'''
    String helloWorlds(int count, DateTime currentDate) {
      final DateFormat currentDateDateFormat = DateFormat.yMMMMEEEEd(_localeName);
      final String currentDateString = currentDateDateFormat.format(currentDate);
  
      String helloWorlds(int count, Object currentDate) {
        return Intl.plural(
          count,
        locale: _localeName,
        name: 'helloWorlds',
        args: <Object>[count, currentDate],
        one: 'Hello World, today is ${currentDateString}',
        two: 'Hello two worlds, today is ${currentDateString}',
        many: 'Hello all ${count} worlds, today is ${currentDateString}',
        other: 'Hello other ${count} worlds, today is ${currentDateString}'
        );
      }
      return helloWorlds(count, currentDateString);
    }
  ''');
      });
  
      group('Number tests', () {
        test('correctly generates simple message with numbers', () {
          const String singleNumberMessage = '''{
    "courseCompletion": "You have completed {progress} of the course.",
    "@courseCompletion": {
      "description": "The amount of progress the student has made in their class.",
      "placeholders": {
        "progress": {
          "type": "double",
          "format": "compact"
        }
      }
    }
  }''';
          final Directory l10nDirectory = fs.currentDirectory.childDirectory('lib').childDirectory('l10n')
            ..createSync(recursive: true);
          l10nDirectory.childFile(defaultTemplateArbFileName)
            .writeAsStringSync(singleNumberMessage);
  
          final LocalizationsGenerator generator = LocalizationsGenerator(fs);
          try {
            generator.initialize(
              l10nDirectoryPath: defaultArbPathString,
              templateArbFileName: defaultTemplateArbFileName,
              outputFileString: defaultOutputFileString,
              classNameString: defaultClassNameString,
            );
            generator.parseArbFiles();
            generator.generateClassMethods();
          } on Exception catch (e) {
            fail('Parsing template arb file should succeed: \n$e');
          }
  
          expect(generator.classMethods, isNotEmpty);
          expect(
            generator.classMethods.first,
            r'''
    String courseCompletion(double progress) {
      final NumberFormat progressNumberFormat = NumberFormat.compact(
        locale: _localeName,
      );
      final String progressString = progressNumberFormat.format(progress);
  
      String courseCompletion(Object progress) {
        return Intl.message(
          'You have completed ${progress} of the course.',
          locale: _localeName,
          name: 'courseCompletion',
          desc: 'The amount of progress the student has made in their class.',
          args: <Object>[progress]
        );
      }
      return courseCompletion(progressString);
    }
  ''');
        });
  
        test('correctly adds optional named parameters to numbers', () {
          const Set<String> numberFormatsWithNamedParameters = <String>{
            'compact',
  
negative.code:   });
  
    group('generateClassMethods', () {
      group('DateTime tests', () {
        test('throws an exception when improperly formatted date is passed in', () {
          const String singleDateMessageArbFileString = '''{
    "springBegins": "Spring begins on {springStartDate}",
  