diff --git a/lib/web_ui/lib/src/engine/conic.dart b/lib/web_ui/lib/src/engine/conic.dart index baa10013dd32e..5de3968c7431a 100644 --- a/lib/web_ui/lib/src/engine/conic.dart +++ b/lib/web_ui/lib/src/engine/conic.dart @@ -33,7 +33,7 @@ class Conic { // Split conic into quads, writes quad coordinates into [_pointList] and // returns number of quads. - assert(subdivideCount > 0); + assert(subdivideCount >= 0 && subdivideCount <= _maxSubdivisionCount); int quadCount = 1 << subdivideCount; bool skipSubdivide = false; pointList.add(ui.Offset(p0x, p0y)); diff --git a/lib/web_ui/test/path_test.dart b/lib/web_ui/test/path_test.dart index aeb9c5cec8999..08de1029fa16e 100644 --- a/lib/web_ui/test/path_test.dart +++ b/lib/web_ui/test/path_test.dart @@ -3,9 +3,9 @@ // found in the LICENSE file. // @dart = 2.6 -import 'package:test/test.dart'; import 'dart:js_util' as js_util; import 'dart:html' as html; +import 'package:test/test.dart'; import 'package:ui/ui.dart' hide window; import 'package:ui/src/engine.dart'; @@ -309,4 +309,10 @@ void main() { expect(path2.contains(Offset(100, 100)), isFalse); expect(path2.contains(Offset(50, 100)), isFalse); }); + + test('Should convert conic to quad when approximation error is small', () { + Conic conic = Conic(120.0, 20.0, 160.99470420829266, 20.0, + 190.19301120261332, 34.38770865870253, 0.9252691032413082); + expect(conic.toQuads().length, 3); + }); }