diff --git a/packages/vector_graphics_compiler/test/parser_test.dart b/packages/vector_graphics_compiler/test/parser_test.dart index 934cee62ac52..761300fe46c2 100644 --- a/packages/vector_graphics_compiler/test/parser_test.dart +++ b/packages/vector_graphics_compiler/test/parser_test.dart @@ -29,6 +29,160 @@ class _TestOpacityColorMapper implements ColorMapper { } void main() { + test('Circular Mask Loop Avoidance', () { + final VectorInstructions instructions = parseWithoutOptimizers(''' + + + + + + + + +'''); + + expect(instructions.paths.isNotEmpty, true); + }); + + test('Unreferenced Circular Mask Loop resolves successfully', () { + final VectorInstructions instructions = parseWithoutOptimizers(''' + + + + + + + + + + + + + + + +'''); + + expect(instructions.paths.length, 1); + }); + + test('Multi-hop Referenced Circular Mask Loop Avoidance', () { + final VectorInstructions instructions = parseWithoutOptimizers(''' + + + + + + + + + + + + + + + + + + + + +'''); + + expect(instructions.paths.isNotEmpty, true); + }); + + test('Circular Deferred Node Loop Avoidance', () { + final VectorInstructions instructions = parseWithoutOptimizers(''' + + + + + + + + + +'''); + + expect(instructions.paths.isEmpty, true); + }); + + test('Unreferenced Circular Use Loop resolves successfully', () { + final VectorInstructions instructions = parseWithoutOptimizers(''' + + + + + + + + + + + +'''); + + expect(instructions.paths.length, 1); + }); + + test('Multi-hop Referenced Circular Use Loop Avoidance', () { + final VectorInstructions instructions = parseWithoutOptimizers(''' + + + + + + + + + + + + + + +'''); + + expect(instructions.paths.isEmpty, true); + }); + + test('Circular Pattern Loop Avoidance', () { + final VectorInstructions instructions = parseWithoutOptimizers(''' + + + + + + +'''); + + expect(instructions.paths.isNotEmpty, true); + }); + + test('Circular ClipPath Loop Avoidance', () { + final VectorInstructions instructions = parseWithoutOptimizers(''' + + + + + + + + + + + + +'''); + expect(instructions.paths.length, 1); + expect( + instructions.commands.any((c) => c.type == DrawCommandType.clip), + false, + ); + }); + test('Reuse ID self-referentially', () { final VectorInstructions instructions = parseWithoutOptimizers('''