mirror of
https://github.com/zjs81/meshcore-open.git
synced 2026-07-12 03:27:06 +10:00
resolved conflict and update doc
This commit is contained in:
@@ -2,17 +2,18 @@ import 'dart:convert';
|
||||
import 'dart:typed_data';
|
||||
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:meshcore_open/connector/meshcore_protocol.dart';
|
||||
import 'package:meshcore_open/models/channel_message.dart';
|
||||
import 'package:meshcore_open/models/contact.dart';
|
||||
import 'package:meshcore_open/models/path_history.dart';
|
||||
import 'package:meshcore_open/models/app_settings.dart';
|
||||
import 'package:meshcore_open/storage/prefs_manager.dart';
|
||||
import 'package:meshcore_open/storage/contact_store.dart';
|
||||
import 'package:meshcore_open/storage/message_store.dart';
|
||||
import 'package:meshcore_open/storage/channel_message_store.dart';
|
||||
import 'package:meshcore_open/storage/contact_discovery_store.dart';
|
||||
import 'package:meshcore_open/services/app_settings_service.dart';
|
||||
import 'package:meshcore_open/storage/prefs_manager.dart';
|
||||
import 'package:meshcore_open/storage/message_store.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
// Builds a valid contact frame with the given pathLen and optional overrides.
|
||||
// Frame layout: [respCode(1)][pubKey(32)][type(1)][flags(1)][pathLen(1)][path(64)][name(32)][timestamp(4)][lat(4)][lon(4)]
|
||||
@@ -51,6 +52,7 @@ Uint8List _buildChannelMessageFrameV3({
|
||||
required bool hasPath,
|
||||
int channelIndex = 7,
|
||||
String senderName = 'Alice',
|
||||
|
||||
String text = 'Hello world',
|
||||
int txtType = txtTypePlain,
|
||||
}) {
|
||||
@@ -77,6 +79,14 @@ Uint8List _buildChannelMessageFrameV3({
|
||||
}
|
||||
|
||||
void main() {
|
||||
TestWidgetsFlutterBinding.ensureInitialized();
|
||||
|
||||
setUp(() async {
|
||||
SharedPreferences.setMockInitialValues({});
|
||||
PrefsManager.reset();
|
||||
await PrefsManager.initialize();
|
||||
});
|
||||
|
||||
group('ChannelMessage.fromFrame — V3 packed path decoding', () {
|
||||
test(
|
||||
'hasPath reads width, hop count, path bytes, and txtType correctly',
|
||||
@@ -467,11 +477,6 @@ void main() {
|
||||
});
|
||||
|
||||
group('Storage migration — multi-byte paths compatibility', () {
|
||||
setUp(() async {
|
||||
SharedPreferences.setMockInitialValues({});
|
||||
await PrefsManager.initialize();
|
||||
});
|
||||
|
||||
test(
|
||||
'ContactStore decodes and migrates legacy mode-encoded paths',
|
||||
() async {
|
||||
@@ -638,5 +643,46 @@ void main() {
|
||||
expect(contacts.first.path, equals(Uint8List.fromList([0x11, 0x22])));
|
||||
},
|
||||
);
|
||||
|
||||
});
|
||||
|
||||
group('AppSettingsService — gps interval fallback', () {
|
||||
test('resolvedGpsIntervalSeconds prefers device custom var', () {
|
||||
final service = AppSettingsService();
|
||||
|
||||
expect(
|
||||
service.resolvedGpsIntervalSeconds(const {'gps_interval': '120'}),
|
||||
equals(120),
|
||||
);
|
||||
});
|
||||
|
||||
test('resolvedGpsIntervalSeconds falls back to stored value', () async {
|
||||
final service = AppSettingsService();
|
||||
await service.updateSettings(AppSettings(gpsIntervalSeconds: 900));
|
||||
|
||||
expect(service.resolvedGpsIntervalSeconds(null), equals(900));
|
||||
expect(
|
||||
service.resolvedGpsIntervalSeconds(const {'gps_interval': 'bad'}),
|
||||
equals(900),
|
||||
);
|
||||
});
|
||||
|
||||
test('resolvedGpsIntervalSeconds keeps an explicit device zero', () async {
|
||||
final service = AppSettingsService();
|
||||
await service.updateSettings(AppSettings(gpsIntervalSeconds: 900));
|
||||
|
||||
expect(
|
||||
service.resolvedGpsIntervalSeconds(const {'gps_interval': '0'}),
|
||||
equals(0),
|
||||
);
|
||||
});
|
||||
|
||||
test('toJson/fromJson preserves gpsIntervalSeconds', () {
|
||||
final settings = AppSettings(gpsIntervalSeconds: 321);
|
||||
|
||||
final restored = AppSettings.fromJson(settings.toJson());
|
||||
|
||||
expect(restored.gpsIntervalSeconds, equals(321));
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user