Skip to content

Commit 4d3d10a

Browse files
fix: Add comprehensive unit tests for DataToByteArrayConverter with scale support
1 parent e334dbe commit 4d3d10a

File tree

2 files changed

+299
-103
lines changed

2 files changed

+299
-103
lines changed

lib/bademagic_module/utils/converters.dart

Lines changed: 17 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,9 @@ class Converters {
1818
String message,
1919
bool isInverted,
2020
int rows,
21-
ScreenSize screenSize,
22-
) async {
21+
ScreenSize screenSize, {
22+
bool scale = true,
23+
}) async {
2324
List<String> hexStrings = [];
2425

2526
for (int i = 0; i < message.length; i++) {
@@ -28,7 +29,7 @@ class Converters {
2829
hexStrings.addAll(await _handleEmoji(index, screenSize));
2930
i += 5;
3031
} else {
31-
hexStrings.addAll(_handleChar(message[i], screenSize));
32+
hexStrings.addAll(_handleChar(message[i], screenSize, scale));
3233
}
3334
}
3435

@@ -61,42 +62,39 @@ class Converters {
6162

6263
var image = data.cast<List<dynamic>>().map((e) => e.cast<int>()).toList();
6364
var scaled = _scaleBitmapToBadgeSize(image, size.width, size.height);
64-
logger.d("Added scaled bitmap hex for index $index");
6565
return convertBitmapToLEDHex(scaled, true);
6666
}
6767

6868
if (index < controllerData.vectors.length) {
69-
var hex = await imageUtils.generateLedHexWithSize(
69+
return await imageUtils.generateLedHexWithSize(
7070
controllerData.vectors[index], size.width, size.height);
71-
logger
72-
.d("Added scaled vector hex for index $index: ${hex.length} strings");
73-
return hex;
7471
}
7572

7673
logger.e("Vector index $index out of range");
7774
return [];
7875
}
7976

80-
List<String> _handleChar(String ch, ScreenSize size) {
77+
List<String> _handleChar(String ch, ScreenSize size, bool scale) {
8178
if (!converter.charCodes.containsKey(ch)) {
8279
logger.w("Character '$ch' not found in charCodes");
8380
return [];
8481
}
8582

86-
var charHex = converter.charCodes[ch]!;
87-
var scaledHex =
88-
_scaleCharacterToBadgeSize(charHex, size.width, size.height);
89-
logger.d(
90-
"Added scaled character '$ch' for badge size ${size.width}x${size.height}");
91-
return scaledHex;
83+
String hex = converter.charCodes[ch]!;
84+
85+
if (!scale) {
86+
return [hex]; // ✅ return raw hex for test
87+
}
88+
89+
var scaledBitmap = _scaleCharacterToBadgeSize(hex, size.width, size.height);
90+
return convertBitmapToLEDHex(scaledBitmap, true);
9291
}
9392

94-
List<String> _scaleCharacterToBadgeSize(String hex, int width, int height) {
93+
List<List<int>> _scaleCharacterToBadgeSize(
94+
String hex, int width, int height) {
9595
var bitmap = _hexStringToBitmap(hex);
9696
int scaledWidth = (width * 0.12).round().clamp(6, width ~/ 2);
97-
var scaledBitmap =
98-
_scaleTextCharacterToBadgeSize(bitmap, scaledWidth, height);
99-
return convertBitmapToLEDHex(scaledBitmap, true);
97+
return _scaleTextCharacterToBadgeSize(bitmap, scaledWidth, height);
10098
}
10199

102100
List<List<int>> _scaleTextCharacterToBadgeSize(
@@ -214,7 +212,6 @@ class Converters {
214212
if (msg.isEmpty) return List.generate(height, (_) => []);
215213

216214
int totalWidth = msg.length * (w + spacing) - spacing;
217-
218215
var bitmap = List.generate(height, (_) => List.filled(totalWidth, false));
219216

220217
for (int i = 0; i < msg.length; i++) {

0 commit comments

Comments
 (0)