| // Copyright 2020 The Fuchsia Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| import 'package:test/test.dart'; | |
| import '../queries/index.dart'; | |
| import '../queries/mock_query.dart'; | |
| import 'ast.dart'; | |
| import 'tsv.dart'; | |
| void main() { | |
| final renderer = TsvRenderer(); | |
| group('TsvRenderer', () { | |
| test('One Level', () { | |
| final output = StringBuffer(); | |
| renderer.render(output, [ | |
| MockQuery([ | |
| Node.plain('[Title 1]'), | |
| Node.plain('[Title 2]'), | |
| ]) | |
| ]); | |
| expect( | |
| output.toString(), | |
| equals('Details\n' | |
| '[Title 1]\n' | |
| '[Title 2]\n')); | |
| }); | |
| test('Two Levels', () { | |
| final output = StringBuffer(); | |
| renderer.render(output, [ | |
| MockQuery([ | |
| Node<SizeRecord>( | |
| title: SizeRecord( | |
| name: StyledString.plain('[Title 1]'), tally: Tally(0, 42)), | |
| children: [Node.plain('[Child]')]), | |
| // This is of a different type, and should not be printed. | |
| Node.plain('[Title 2]'), | |
| ]) | |
| ]); | |
| expect( | |
| output.toString(), | |
| equals('Name\tSize\tRaw Size\tNum Symbols\n' | |
| '[Title 1]\t0 B\t0\t42\n')); | |
| }); | |
| test('Three Levels', () { | |
| final output = StringBuffer(); | |
| renderer.render(output, [ | |
| MockQuery([ | |
| Node<SizeRecord>( | |
| title: SizeRecord( | |
| name: StyledString.plain('[Title 1]'), tally: Tally(0, 42)), | |
| // These children should not be printed. | |
| children: [ | |
| Node<StyledString>( | |
| title: StyledString.plain('[Child]'), | |
| children: [Node.plain('[Nested Child]')]) | |
| ]), | |
| Node.plain('[Title 2]'), | |
| ]) | |
| ]); | |
| expect( | |
| output.toString(), | |
| equals('Name\tSize\tRaw Size\tNum Symbols\n' | |
| '[Title 1]\t0 B\t0\t42\n')); | |
| }); | |
| }); | |
| } |