Skip to content

Commit

Permalink
[BUG] 走時表の計算バグ修正 (#691)
Browse files Browse the repository at this point in the history
* fix
  • Loading branch information
YumNumm authored May 29, 2024
1 parent 5113692 commit fc03f90
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,9 @@ Future<TravelTimeTables> travelTime(TravelTimeRef ref) async {
@Riverpod(keepAlive: true)
Future<TravelTimeDepthMap> travelTimeDepthMap(
TravelTimeDepthMapRef ref,
) {
final state = ref.watch(travelTimeProvider);
final value = state.value;
if (value == null) {
return Future.value({});
}
return Future.value(value.table.groupListsBy((e) => e.depth));
) async {
final state = await ref.watch(travelTimeProvider.future);
return state.table.groupListsBy((e) => e.depth);
}

typedef TravelTimeDepthMap = Map<int, List<TravelTimeTable>>;
Expand All @@ -36,8 +32,8 @@ extension TravelTimeDepthMapCalc on TravelTimeDepthMap {
return TravelTimeResult(null, null);
}
final p = () {
final p1 = lists.firstWhereOrNull((e) => e.p <= duration);
final p2 = lists.lastWhereOrNull((e) => e.p >= duration);
final p1 = lists.lastWhereOrNull((e) => e.p <= duration);
final p2 = lists.firstWhereOrNull((e) => e.p >= duration);
if (p1 == null || p2 == null) {
return null;
}
Expand All @@ -47,8 +43,8 @@ extension TravelTimeDepthMapCalc on TravelTimeDepthMap {
return p;
}();
final s = () {
final s1 = lists.firstWhereOrNull((e) => e.s <= duration);
final s2 = lists.lastWhereOrNull((e) => e.s >= duration);
final s1 = lists.lastWhereOrNull((e) => e.s <= duration);
final s2 = lists.firstWhereOrNull((e) => e.s >= duration);
if (s1 == null || s2 == null) {
return null;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
import 'package:eqmonitor/core/provider/travel_time/provider/travel_time_provider.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';

void main() {
TestWidgetsFlutterBinding.ensureInitialized();
final container = ProviderContainer();

// Wait for loading
setUp(() async {
await container.read(travelTimeDepthMapProvider.future);
});

test('travelTimeDepthMap', () {
final travelTimeDepthMap = container.read(travelTimeDepthMapProvider);
expect(travelTimeDepthMap, isNotNull);
});

group(
'TravelTimeDepthMapCalc',
() {
// https://zenn.dev/boocsan/articles/travel-time-table-converter-adcal2020?#%E5%8B%95%E4%BD%9C%E7%A2%BA%E8%AA%8D より
test(
'20km 20sec',
() async {
final travelMap =
await container.read(travelTimeDepthMapProvider.future);
final result = travelMap.getTravelTime(20, 20);
expect(result.pDistance, 122.35900962861072);
expect(result.sDistance, 67.68853695324285);
},
);
test(
'100km 200sec',
() async {
final travelMap =
await container.read(travelTimeDepthMapProvider.future);
final result = travelMap.getTravelTime(100, 200);
expect(result.pDistance, 1603.2552083333333);
expect(result.sDistance, 868.2417083144026);
},
);
test(
'200km 200sec',
() async {
final travelMap =
await container.read(travelTimeDepthMapProvider.future);
final result = travelMap.getTravelTime(200, 200);
expect(result.pDistance, 1639.8745519713261);
expect(result.sDistance, 874.7576045627376);
},
);
test(
'300km 200sec',
() async {
final travelMap =
await container.read(travelTimeDepthMapProvider.future);
final result = travelMap.getTravelTime(300, 200);
expect(result.pDistance, 1672.7323943661972);
expect(result.sDistance, 869.2659627953747);
},
);
},
);
}

0 comments on commit fc03f90

Please sign in to comment.