blob: 0c484d1831bdb778d90bc3b0ad42087230590ade [file] [log] [blame]
// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'package:expect/expect.dart';
void main() {
final schema = const UserSchema();
Expect.equals('users', schema.name);
final user = const User(first: 'firstname');
var map = schema._decode(user);
Expect.equals('firstname', map['first']);
}
class User {
final String first;
const User({
required this.first,
});
}
class Schema<T> {
final String name;
final Map<String, Object> Function(T) _decode;
const Schema({
required this.name,
required Map<String, Object> Function(T) decode,
})
: _decode = decode;
}
class UserSchema extends Schema<User> {
static Map<String, Object> _decode$(User user) {
return {
'first': user.first,
};
}
const UserSchema() : super(name: 'users', decode: _decode$);
}