Fix size sorting and add regressive test

This commit is contained in:
2025-03-17 22:29:13 +01:00
parent 878244ead0
commit 179bebf188
3 changed files with 441 additions and 24 deletions

View File

@@ -1,3 +1,4 @@
import 'package:rimworld_modman/logger.dart';
import 'package:rimworld_modman/mod.dart';
import 'package:rimworld_modman/mod_list.dart';
import 'package:test/test.dart';
@@ -147,6 +148,46 @@ void main() {
expect(result.errors.any((e) => e.contains('incompatible')), isTrue);
expect(result.errors.any((e) => e.contains('harmony')), isTrue);
});
test('Base game should load before other mods', () {
final list = ModList();
list.mods = {
'dummy': makeDummy().copyWith(size: 10000),
'ludeon.rimworld': makeDummy().copyWith(
name: 'RimWorld',
id: 'ludeon.rimworld',
isBaseGame: true,
),
};
list.enableAll();
final result = list.generateLoadOrder();
final expected = ['ludeon.rimworld', 'dummy'];
expect(result.errors, isEmpty);
expect(result.loadOrder, equals(expected));
});
test('Base game and expansions should load before other mods', () {
final list = ModList();
list.mods = {
'dummy': makeDummy().copyWith(size: 10000),
'ludeon.rimworld': makeDummy().copyWith(
name: 'RimWorld',
id: 'ludeon.rimworld',
isBaseGame: true,
),
'ludeon.rimworld.anomaly': makeDummy().copyWith(
name: 'RimWorld Anomaly',
id: 'ludeon.rimworld.anomaly',
dependencies: ['ludeon.rimworld'],
isExpansion: true,
),
};
list.enableAll();
final result = list.generateLoadOrder();
final expected = ['ludeon.rimworld', 'ludeon.rimworld.anomaly', 'dummy'];
expect(result.errors, isEmpty);
expect(result.loadOrder, equals(expected));
});
});
group('Test loadRequired', () {