43 lines
1.6 KiB
Dart
43 lines
1.6 KiB
Dart
import 'package:cellar/cellar.dart';
|
|
import 'package:test/test.dart';
|
|
|
|
double num(CellValue value) => (value as NumberValue).value;
|
|
|
|
void main() {
|
|
group('workbook JSON store', () {
|
|
test('round trips values, formulas, formats and names', () {
|
|
final workbook = Workbook();
|
|
final sheet1 = workbook.addSheet('Sheet1');
|
|
final data = workbook.addSheet('Data');
|
|
sheet1.setValue('A1', '10');
|
|
sheet1.setValue('A2', '20');
|
|
sheet1.setValue('A3', '=SUM(A1:A2)');
|
|
sheet1.setFormat('A3', const NumberFormat.currency('zl', before: false, thousands: false));
|
|
data.setValue('B1', '=Sheet1!A3 * 2');
|
|
workbook.defineName('Total', 'Sheet1!A3');
|
|
|
|
final encoded = encodeWorkbookJson(workbook);
|
|
final reloaded = decodeWorkbookJson(encoded);
|
|
|
|
expect(reloaded.sheetNames, ['Sheet1', 'Data']);
|
|
expect(num(reloaded.sheet('Sheet1').valueOf('A3')), 30);
|
|
expect(reloaded.sheet('Sheet1').displayAt(CellAddress.parse('A3')), '30.00zl');
|
|
expect(num(reloaded.sheet('Data').valueOf('B1')), 60);
|
|
expect(reloaded.resolveName('Total'), isNotNull);
|
|
});
|
|
|
|
test('reloaded workbook recomputes after an edit', () {
|
|
final workbook = Workbook();
|
|
final sheet1 = workbook.addSheet('Sheet1');
|
|
final data = workbook.addSheet('Data');
|
|
sheet1.setValue('A1', '5');
|
|
data.setValue('B1', '=Sheet1!A1 + 100');
|
|
|
|
final reloaded = decodeWorkbookJson(encodeWorkbookJson(workbook));
|
|
expect(num(reloaded.sheet('Data').valueOf('B1')), 105);
|
|
reloaded.sheet('Sheet1').setValue('A1', '7');
|
|
expect(num(reloaded.sheet('Data').valueOf('B1')), 107);
|
|
});
|
|
});
|
|
}
|