Index: test/mixin_test.dart |
diff --git a/test/mixin_test.dart b/test/mixin_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..2e8c789d8347140676b2a7c041d9f7ed484af31d |
--- /dev/null |
+++ b/test/mixin_test.dart |
@@ -0,0 +1,67 @@ |
+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); |
+ }); |
+ }); |
+} |