mirror of
https://github.com/dart-lang/sdk
synced 2024-11-02 10:10:22 +00:00
67539c2faf
Change-Id: I318742cd4303d70c0625c9efd98bb01087aa5de4 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/150466 Commit-Queue: Bob Nystrom <rnystrom@google.com> Reviewed-by: Erik Ernst <eernst@google.com>
42 lines
983 B
Dart
42 lines
983 B
Dart
// 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$);
|
|
}
|