Files
flame/test/composed_component_test.dart
2020-04-20 21:11:54 +02:00

70 lines
1.6 KiB
Dart

import 'dart:ui';
import 'package:flame/components/composed_component.dart';
import 'package:flame/components/mixins/has_game_ref.dart';
import 'package:flame/components/mixins/resizable.dart';
import 'package:flame/components/mixins/tapable.dart';
import 'package:flame/game/base_game.dart';
import 'package:flutter/gestures.dart';
import 'package:test/test.dart';
import 'package:flame/components/component.dart';
class MyGame extends BaseGame {}
class MyTap extends PositionComponent with Tapable, Resizable {
bool tapped = false;
@override
void render(Canvas c) {}
@override
void update(double t) {}
@override
void onTapDown(TapDownDetails details) {
tapped = true;
}
@override
bool checkTapOverlap(Offset o) => true;
}
class MyComposed extends Component with HasGameRef, Tapable, ComposedComponent {
@override
void update(double dt) {}
@override
void render(Canvas c) {}
@override
Rect toRect() => Rect.zero;
}
class PositionComponentNoNeedForRect extends PositionComponent with Tapable {
@override
void render(Canvas c) {}
@override
void update(double t) {}
}
const Size size = Size(1.0, 1.0);
void main() {
group('composable component test', () {
test('taps and resizes children', () {
final MyGame game = MyGame();
final MyTap child = MyTap();
final MyComposed wrapper = MyComposed()..add(child);
game.size = size;
game.add(wrapper);
game.onTapDown(TapDownDetails(globalPosition: const Offset(0.0, 0.0)));
expect(child.size, size);
expect(child.tapped, true);
});
});
}