blob: 2e8c789d8347140676b2a7c041d9f7ed484af31d [file] [log] [blame]
import 'package:test/test.dart';
import '../out/protos/mixins.pb.dart' as pb;
import 'package:protoc_plugin/testing/mixins.dart';
void main() {
group('Proto with Mixin1', () {
pb.Mixin1PB proto;
setUp(() {
proto = new pb.Mixin1PB();
});
test('is a Mixin1', () {
expect(proto is Mixin1, isTrue);
expect(proto is Mixin2, isFalse);
});
test('implements interface defined by mixins', () {
proto.interfaceString = 'test';
expect(proto.hasInterfaceString(), isTrue);
expect(proto.interfaceString, equals('test'));
});
});
group('Proto with Mixin2', () {
pb.Mixin2PB proto;
setUp(() {
proto = new pb.Mixin2PB();
});
test('overrides has method', () {
expect(proto.hasOverriddenHasMethod(), isFalse);
proto.overriddenHasMethod = 'test';
expect(proto.hasOverriddenHasMethod(), isTrue);
});
});
group('Proto without mixins', () {
pb.NoMixinPB proto;
setUp(() {
proto = new pb.NoMixinPB();
});
test('is neither Mixin1 nor Mixin2', () {
expect(proto is Mixin1, isFalse);
expect(proto is Mixin2, isFalse);
});
});
group('Proto with Mixin3', () {
pb.Mixin3PB proto;
setUp(() {
proto = new pb.Mixin3PB();
});
test('is both Mixin1 (from parent) and Mixin3', () {
expect(proto is Mixin1, isTrue);
expect(proto is Mixin2, isFalse);
expect(proto is Mixin3, isTrue);
});
});
}