Skip to content

Commit

Permalink
Merge 9db6c8d into a38a346
Browse files Browse the repository at this point in the history
  • Loading branch information
desistefanova authored Mar 15, 2022
2 parents a38a346 + 9db6c8d commit bb50df2
Show file tree
Hide file tree
Showing 5 changed files with 121 additions and 59 deletions.
59 changes: 0 additions & 59 deletions generator/test/generator_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,65 +3,6 @@ import 'package:realm_generator/realm_generator.dart';
import 'package:test/test.dart';

void main() {
test('pinhole', () async {
await testBuilder(
generateRealmObjects(),
{
'pkg|lib/src/test.dart': r'''
import 'package:realm_common/realm_common.dart';
part 'test.g.dart';
@RealmModel()
class _Foo {
int x = 0;
}''',
},
outputs: {
'pkg|lib/src/test.realm_objects.g.part': '// **************************************************************************\n'
'// RealmObjectGenerator\n'
'// **************************************************************************\n'
'\n'
'class Foo extends _Foo with RealmEntity, RealmObject {\n'
' static var _defaultsSet = false;\n'
'\n'
' Foo({\n'
' int x = 0,\n'
' }) {\n'
' if (!_defaultsSet) {\n'
' _defaultsSet = RealmObject.setDefaults<Foo>({\n'
' \'x\': 0,\n'
' });\n'
' }\n'
' RealmObject.set(this, \'x\', x);\n'
' }\n'
'\n'
' Foo._();\n'
'\n'
' @override\n'
' int get x => RealmObject.get<int>(this, \'x\') as int;\n'
' @override\n'
' set x(int value) => RealmObject.set(this, \'x\', value);\n'
'\n'
' @override\n'
' Stream<RealmObjectChanges<Foo>> get changes =>\n'
' RealmObject.getChanges<Foo>(this);\n'
'\n'
' static SchemaObject get schema => _schema ??= _initSchema();\n'
' static SchemaObject? _schema;\n'
' static SchemaObject _initSchema() {\n'
' RealmObject.registerFactory(Foo._);\n'
' return const SchemaObject(Foo, [\n'
' SchemaProperty(\'x\', RealmPropertyType.int),\n'
' ]);\n'
' }\n'
'}\n'
'',
},
reader: await PackageAssetReader.currentIsolate(),
);
});

test('all types', () async {
await testBuilder(
generateRealmObjects(),
Expand Down
9 changes: 9 additions & 0 deletions generator/test/generator_tests_data/pinhole.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import 'package:realm_common/realm_common.dart';
import '../../../lib/realm.dart';

part 'pinhole.g.dart';

@RealmModel()
class _Foo {
int x = 0;
}
38 changes: 38 additions & 0 deletions generator/test/generator_tests_data/pinhole.g.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
// **************************************************************************
// RealmObjectGenerator
// **************************************************************************
part of 'pinhole.dart';

class Foo extends _Foo with RealmEntity, RealmObject {
static var _defaultsSet = false;

Foo({
int x = 0,
}) {
if (!_defaultsSet) {
_defaultsSet = RealmObject.setDefaults<Foo>({
'x': 0,
});
}
RealmObject.set(this, 'x', x);
}

Foo._();

@override
int get x => RealmObject.get<int>(this, 'x') as int;
@override
set x(int value) => RealmObject.set(this, 'x', value);

@override
Stream<RealmObjectChanges<Foo>> get changes => RealmObject.getChanges<Foo>(this);

static SchemaObject get schema => _schema ??= _initSchema();
static SchemaObject? _schema;
static SchemaObject _initSchema() {
RealmObject.registerFactory(Foo._);
return const SchemaObject(Foo, [
SchemaProperty('x', RealmPropertyType.int),
]);
}
}
10 changes: 10 additions & 0 deletions generator/test/generator_tests_data/tests.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import 'package:test/test.dart';
import '../test_util.dart';

void main() {
final folderName = 'generator_tests_data';

test('pinhole', () async {
await ioTtestBuilder(folderName, 'pinhole');
});
}
64 changes: 64 additions & 0 deletions generator/test/test_util.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
import 'dart:io';
import 'dart:async';
import 'dart:convert';
import 'package:path/path.dart' as _path;
import 'package:dart_style/dart_style.dart';
import 'package:build/build.dart';
import 'package:build_test/build_test.dart';
import 'package:realm_generator/realm_generator.dart';

String _stringReplacements(String content) {
final formatter = DartFormatter();
var lines = LineSplitter.split(content);
String formattedContent = lines.where((element) => !element.startsWith("part of")).join('\n');
return formatter.format(formattedContent);
}

Future<String> readFileAsFormattedString(String path) async {
var file = File(_path.join(Directory.current.path, path));
return await file.readAsString(encoding: utf8).then((value) => _stringReplacements(value));
}

class _OutputFileWriter extends RecordingAssetWriter {
final _assets = <AssetId, List<int>>{};

@override
Map<AssetId, List<int>> get assets => _assets;

@override
Future<void> writeAsBytes(AssetId id, List<int> bytes) {
return Future<void>(() {
String content = _stringReplacements(utf8.decode(bytes));
_assets.addAll({id: utf8.encode(content)});
});
}

@override
Future<void> writeAsString(AssetId id, String contents, {Encoding encoding = utf8}) {
return Future<void>(() {
_assets.addAll({id: encoding.encode(_stringReplacements(contents))});
});
}
}

Future<Map<String, Object>> getInputFileAsset(String path) async {
String input = await readFileAsFormattedString(path);
return {'pkg|$path': input};
}

Future<Map<String, Object>> getOutputFileAsset(String path) async {
String output = await readFileAsFormattedString(path);
String fileNameWithoutExtensions = _path.basenameWithoutExtension(_path.basenameWithoutExtension(path));
var generatedFile = '${_path.dirname(path)}/$fileNameWithoutExtensions.realm_objects.g.part';
return {'pkg|$generatedFile': output};
}

Future<dynamic> ioTtestBuilder(String directoryName, String testFilesPreffix) async {
return testBuilder(
generateRealmObjects(),
await getInputFileAsset('test/$directoryName/$testFilesPreffix.dart'),
outputs: await getOutputFileAsset('test/$directoryName/$testFilesPreffix.g.dart'),
reader: await PackageAssetReader.currentIsolate(),
writer: _OutputFileWriter(),
);
}

0 comments on commit bb50df2

Please sign in to comment.