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();
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 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$);