Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import 'dart:convert';
import 'dart:io';
import 'package:carp_connectivity_package/connectivity.dart';
import 'package:dchs_flutter_beacon/dchs_flutter_beacon.dart';
import 'package:test/test.dart';

import 'package:carp_serializable/carp_serializable.dart';
Expand All @@ -11,85 +12,84 @@ void main() {
late StudyProtocol protocol;
Smartphone phone;

setUp(() {
// Initialization of serialization
CarpMobileSensing();
setUp(
() {
// Initialization of serialization
CarpMobileSensing();

// register the context sampling package
SamplingPackageRegistry().register(ConnectivitySamplingPackage());
// register the context sampling package
SamplingPackageRegistry().register(ConnectivitySamplingPackage());

// Create a new study protocol.
protocol = StudyProtocol(
ownerId: '[email protected]',
name: 'Connectivity package test',
);

// Define which devices are used for data collection.
phone = Smartphone();
// Create a new study protocol.
protocol = StudyProtocol(
ownerId: '[email protected]',
name: 'Connectivity package test',
);

protocol.addPrimaryDevice(phone);
// Define which devices are used for data collection.
phone = Smartphone();

// adding all available measures to one one trigger and one task
protocol.addTaskControl(
ImmediateTrigger(),
BackgroundTask()
..measures = SamplingPackageRegistry()
.dataTypes
.map((type) => Measure(type: type.type))
.toList(),
phone,
);
protocol.addPrimaryDevice(phone);

// also add a PeriodicSamplingConfiguration
protocol.addTaskControl(
// adding all available measures to one one trigger and one task
protocol.addTaskControl(
ImmediateTrigger(),
BackgroundTask()
..measures = SamplingPackageRegistry().dataTypes.map((type) => Measure(type: type.type)).toList(),
phone,
);

// also add a PeriodicSamplingConfiguration
protocol.addTaskControl(
ImmediateTrigger(),
BackgroundTask(
measures: [
Measure(type: ConnectivitySamplingPackage.BLUETOOTH)
..overrideSamplingConfiguration = PeriodicSamplingConfiguration(
interval: const Duration(minutes: 10),
duration: const Duration(seconds: 10),
),
],
),
phone);

// also add a BluetoothScanPeriodicSamplingConfiguration
protocol.addTaskControl(
ImmediateTrigger(),
BackgroundTask(measures: [
Measure(
type: ConnectivitySamplingPackage.BLUETOOTH,
samplingConfiguration: BluetoothScanPeriodicSamplingConfiguration(
interval: const Duration(minutes: 10),
duration: const Duration(seconds: 10),
withRemoteIds: ['123', '456'],
withServices: ['service1', 'service2'],
))
]),
phone);

protocol.addTaskControl(
ImmediateTrigger(),
BackgroundTask(
measures: [
Measure(type: ConnectivitySamplingPackage.BLUETOOTH)
..overrideSamplingConfiguration = PeriodicSamplingConfiguration(
interval: const Duration(minutes: 10),
duration: const Duration(seconds: 10),
),
],
),
phone);

// also add a BluetoothScanPeriodicSamplingConfiguration
protocol.addTaskControl(
ImmediateTrigger(),
BackgroundTask(measures: [
Measure(
type: ConnectivitySamplingPackage.BLUETOOTH,
samplingConfiguration: BluetoothScanPeriodicSamplingConfiguration(
interval: const Duration(minutes: 10),
duration: const Duration(seconds: 10),
withRemoteIds: ['123', '456'],
withServices: ['service1', 'service2'],
))
]),
phone);

protocol.addTaskControl(
ImmediateTrigger(),
BackgroundTask(measures: [
Measure(
Measure(
type: ConnectivitySamplingPackage.BEACON,
samplingConfiguration: BeaconRangingPeriodicSamplingConfiguration(
beaconDistance: 2,
beaconRegions: [
BeaconRegion(
identifier: 'region1',
uuid: '12345678-1234-1234-1234-123456789012',
),
BeaconRegion(
identifier: 'region2',
uuid: '12345678-1234-1234-1234-123456789012',
identifier: 'TestB1',
uuid: 'fda50693-a4e2-4fb1-afcf-c6eb07647825',
),
],
))
]),
phone);
});
),
),
],
),
phone,
);
},
);

test('CAMSStudyProtocol -> JSON', () async {
print(protocol);
Expand All @@ -101,8 +101,7 @@ void main() {
print('#1 : $protocol');
final studyJson = toJsonString(protocol);

StudyProtocol protocolFromJson =
StudyProtocol.fromJson(json.decode(studyJson) as Map<String, dynamic>);
StudyProtocol protocolFromJson = StudyProtocol.fromJson(json.decode(studyJson) as Map<String, dynamic>);
expect(toJsonString(protocolFromJson), equals(studyJson));
print('#2 : $protocolFromJson');
});
Expand All @@ -111,8 +110,7 @@ void main() {
// Read the study protocol from json file
String plainJson = File('test/json/study_protocol.json').readAsStringSync();

StudyProtocol protocol =
StudyProtocol.fromJson(json.decode(plainJson) as Map<String, dynamic>);
StudyProtocol protocol = StudyProtocol.fromJson(json.decode(plainJson) as Map<String, dynamic>);

expect(protocol.ownerId, '[email protected]');
expect(protocol.primaryDevice.roleName, Smartphone.DEFAULT_ROLE_NAME);
Expand All @@ -134,9 +132,23 @@ void main() {

print(toJsonString(measurement));
});

test('Beacon -> JSON', () async {
BeaconData data = BeaconData(region: "TestB1")..addBeaconDevice(
BeaconDevice(
uuid: 'fda50693-a4e2-4fb1-afcf-c6eb07647825',
rssi: -60,
proximity: Proximity.near,
),
);

final measurement = Measurement.fromData(data);

print(toJsonString(measurement));
});

test('Connectivity -> JSON', () async {
Connectivity data = Connectivity()
..connectivityStatus = [ConnectivityStatus.bluetooth];
Connectivity data = Connectivity()..connectivityStatus = [ConnectivityStatus.bluetooth];

final measurement = Measurement.fromData(data);

Expand Down