blob: 3e431f738065e441f2a34d454cbc5b4ea168b512 [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.
// @dart = 2.9
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({
this.first,
});
}
class Schema<T> {
final String name;
final Map<String, Object> Function(T) _decode;
const Schema({
this.name,
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$);
}