diff --git a/lib/src/digit_span_task/components/data/digit_span_task_data.dart b/lib/src/digit_span_task/components/data/digit_span_task_data.dart new file mode 100644 index 0000000..2ebd2f3 --- /dev/null +++ b/lib/src/digit_span_task/components/data/digit_span_task_data.dart @@ -0,0 +1,32 @@ +import 'package:cognitive_data/cognitive_data.dart'; + +/// Structured data collected for a single session. +/// Includes data about the [trials] (practice and experimental), +/// and metadata about the [session] and [device] used to collect the data. +class DigitSpanTaskData { + /// Data for all trials + late final List trials; + + /// Metadata about the session + late final Session session; + + /// Metadata about the device on which the data was collected + late final Device device; + + DigitSpanTaskData({ + required this.trials, + required this.session, + required this.device, + }); + + @override + String toString() { + final representation = 'Session data:' + '\n${session.toString()}' + '\nDevice data:' + '\n${device.toString()}' + '\nTrials data:' + '\n${trials.toString()}'; + return representation; + } +} diff --git a/test/src/digit_span_task/components/data/digit_span_task_data_test.dart b/test/src/digit_span_task/components/data/digit_span_task_data_test.dart new file mode 100644 index 0000000..f925342 --- /dev/null +++ b/test/src/digit_span_task/components/data/digit_span_task_data_test.dart @@ -0,0 +1,61 @@ +import 'package:cognitive_data/cognitive_data.dart'; +import 'package:digit_span_tasks/src/digit_span_task/components/data/digit_span_task_data.dart'; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + test( + "DigitSpanTaskData.toString returns correct representation", + () { + TestWidgetsFlutterBinding.ensureInitialized(); + + /// arrange + /// session + final Session session = Session( + participantID: '101', + sessionID: '001', + startTime: DateTime.now(), + endTime: DateTime.now()); + + /// device + final Device device = Device(participantID: '101', sessionID: '001'); + + /// list trial + final List trials = [ + Trial( + participantID: '101', + sessionID: '001', + trialType: TrialType.practice, + stim: '456', + response: '123'), + Trial( + participantID: '102', + sessionID: '002', + trialType: TrialType.practice, + stim: '789', + response: '987'), + ]; + + /// DigitSpanTaskData + DigitSpanTaskData data = DigitSpanTaskData( + session: session, + device: device, + trials: trials, + ); + + /// expected + final expectedRepr = 'Session data:' + '\n${session.toString()}' + '\nDevice data:' + '\n${device.toString()}' + '\nTrials data:' + '\n${trials.toString()}'; + + /// act + /// tostring + final String actualRepr = data.toString(); + + /// assert + expect(actualRepr, expectedRepr); + }, + ); +}