mirror of
https://github.com/kuhyx/diet-guard.git
synced 2026-11-11 18:33:56 +01:00
Some checks are pending
dependency freshness / dependencies on newest stable (push) Waiting to run
file-length / file length <= 250 lines (push) Waiting to run
md-naming / markdown naming convention (push) Waiting to run
pre-commit / pre-commit (${{ matrix.group }}) (mypy, mypy, ) (push) Waiting to run
pre-commit / pre-commit (${{ matrix.group }}) (pylint, pylint, ) (push) Waiting to run
pre-commit / pre-commit (${{ matrix.group }}) (rest, , mypy,pylint) (push) Waiting to run
Tests / test (push) Waiting to run
release-apk / release (APK) (push) Waiting to run
repo-contract / repo contract (push) Waiting to run
- lightImpact + 160 ms confirm cue on a validated log (audioplayers, no audio focus); device-local opt-out switch in Settings, on by default - post-log card: confirmation line (slot + the meal's kcal), entrance and kcal/streak count-up on motion tokens transcribed into ui/theme.dart; durations collapse to zero under disableAnimations - test/flutter_test_config.dart mutes the cue suite-wide Todo: 8e66c1b9 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WzxdWVHMLzeojNP4AaPoEj
48 lines
1.4 KiB
Dart
48 lines
1.4 KiB
Dart
import 'package:diet_guard_app/ui/theme.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
|
|
void main() {
|
|
test('durations follow the shared motion scale', () {
|
|
expect(AppDuration.instant, Duration.zero);
|
|
expect(AppDuration.fast, const Duration(milliseconds: 120));
|
|
expect(AppDuration.base, const Duration(milliseconds: 200));
|
|
expect(AppDuration.slow, const Duration(milliseconds: 320));
|
|
});
|
|
|
|
test('curves carry the shared control points', () {
|
|
expect(AppCurve.standard, const Cubic(0.2, 0, 0, 1));
|
|
expect(AppCurve.decelerate, const Cubic(0, 0, 0, 1));
|
|
expect(AppCurve.accelerate, const Cubic(0.3, 0, 1, 1));
|
|
});
|
|
|
|
Future<Duration> resolved(
|
|
WidgetTester tester, {
|
|
required bool reduced,
|
|
}) async {
|
|
late Duration out;
|
|
await tester.pumpWidget(
|
|
MediaQuery(
|
|
data: MediaQueryData(disableAnimations: reduced),
|
|
child: Builder(
|
|
builder: (context) {
|
|
out = AppDuration.resolve(context, AppDuration.slow);
|
|
return const SizedBox();
|
|
},
|
|
),
|
|
),
|
|
);
|
|
return out;
|
|
}
|
|
|
|
testWidgets('resolve collapses to zero under disableAnimations', (
|
|
tester,
|
|
) async {
|
|
expect(await resolved(tester, reduced: true), Duration.zero);
|
|
});
|
|
|
|
testWidgets('resolve returns the token otherwise', (tester) async {
|
|
expect(await resolved(tester, reduced: false), AppDuration.slow);
|
|
});
|
|
}
|