Files
apidash/packages/genai/test/models/model_config_value_test.dart
2025-08-31 01:56:48 +05:30

111 lines
3.3 KiB
Dart

import 'dart:convert';
import 'package:flutter_test/flutter_test.dart';
import 'package:genai/models/model_config_value.dart';
void main() {
group('ConfigType Enum', () {
test('getConfigTypeEnum returns correct enum', () {
expect(getConfigTypeEnum('boolean'), ConfigType.boolean);
expect(getConfigTypeEnum('slider'), ConfigType.slider);
expect(getConfigTypeEnum('numeric'), ConfigType.numeric);
expect(getConfigTypeEnum('text'), ConfigType.text);
});
test('getConfigTypeEnum falls back to text on invalid', () {
expect(getConfigTypeEnum('does_not_exist'), ConfigType.text);
expect(getConfigTypeEnum(null), ConfigType.text);
});
});
group('ConfigBooleanValue', () {
test('serialize and deserialize works', () {
final value = ConfigBooleanValue(value: true);
final serialized = value.serialize();
expect(serialized, 'true');
final deserialized = ConfigBooleanValue.deserialize(serialized);
expect(deserialized.value, true);
});
});
group('ConfigNumericValue', () {
test('serialize and deserialize works', () {
final value = ConfigNumericValue(value: 42);
final serialized = value.serialize();
expect(serialized, '42');
final deserialized = ConfigNumericValue.deserialize('42');
expect(deserialized.value, 42);
final nullValue = ConfigNumericValue.deserialize('not_a_number');
expect(nullValue.value, null);
});
});
group('ConfigSliderValue', () {
test('serialize and deserialize works', () {
final value = ConfigSliderValue(value: (0.0, 0.5, 1.0));
final serialized = value.serialize();
expect(serialized, jsonEncode([0.0, 0.5, 1.0]));
final deserialized = ConfigSliderValue.deserialize(serialized);
expect(deserialized.value, (0.0, 0.5, 1.0));
});
test('getPayloadValue returns middle element', () {
final slider = ConfigSliderValue(value: (0.0, 0.5, 1.0));
expect(slider.getPayloadValue(), 0.5);
});
});
group('ConfigTextValue', () {
test('serialize and deserialize works', () {
final value = ConfigTextValue(value: 'hello');
final serialized = value.serialize();
expect(serialized, 'hello');
final deserialized = ConfigTextValue.deserialize('world');
expect(deserialized.value, 'world');
});
});
group('checkTypeValue', () {
test('validates correct type/value matches', () {
expect(
checkTypeValue(ConfigType.boolean, ConfigBooleanValue(value: true)),
true,
);
expect(
checkTypeValue(ConfigType.numeric, ConfigNumericValue(value: 3)),
true,
);
expect(
checkTypeValue(
ConfigType.slider,
ConfigSliderValue(value: (0, 0.5, 1)),
),
true,
);
expect(
checkTypeValue(ConfigType.text, ConfigTextValue(value: 'hi')),
true,
);
});
test('returns false for mismatched type/value', () {
expect(
checkTypeValue(ConfigType.boolean, ConfigNumericValue(value: 1)),
false,
);
expect(
checkTypeValue(ConfigType.numeric, ConfigTextValue(value: 'x')),
false,
);
expect(
checkTypeValue(ConfigType.slider, ConfigBooleanValue(value: true)),
false,
);
});
});
}