blob: 0e7c043e0544245d5e726eed289ffc69a6624f7c [file] [log] [blame]
// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file
// for details. 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 'package:web_generator/src/formatting.dart';
void main() {
group('formatDocs', () {
test('simple', () {
compare('''
The **`Accelerometer`** interface of the [Sensor APIs](/en-US/docs/Web/API/Sensor_APIs) provides on each reading the acceleration applied to the device along all three axes.
''', '''
/// The **`Accelerometer`** interface of the
/// [Sensor APIs](https://developer.mozilla.org/en-US/docs/Web/API/Sensor_APIs)
/// provides on each reading the acceleration applied to the device along all
/// three axes.
''');
});
test('list', () {
compare('''
- item 1
- item 2; lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum
- item 3
''', '''
/// - item 1
/// - item 2; lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem
/// ipsum lorem ipsum lorem ipsum
/// - item 3
''');
});
test('quotes', () {
compare('''
> **Note** lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum
''', '''
/// > **Note** lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem
/// > ipsum lorem ipsum lorem ipsum
''');
});
test('code fences', () {
compare('''
Some text.
```
Sample code.
Lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum.
```
''', '''
/// Some text.
///
/// ```
/// Sample code.
/// Lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum.
/// ```
''');
});
test('tables don\'t wrap', () {
compare('''
Some text.
| Attribute | Namespace name | Namespace prefix | Attribute local name | Attribute qualified name |
| --------- | -------------- | ---------------- | -------------------- | ------------------------ |
| `myAttr` | _none_ | _none_ | `myAttr` | `myAttr` |
| `myAttr` | `mynamespace` | _none_ | `myAttr` | `myAttr` |
| `myAttr` | `mynamespace` | `myns` | `myAttr` | `myns:myAttr` |
''', '''
/// Some text.
///
/// | Attribute | Namespace name | Namespace prefix | Attribute local name | Attribute qualified name |
/// | --------- | -------------- | ---------------- | -------------------- | ------------------------ |
/// | `myAttr` | _none_ | _none_ | `myAttr` | `myAttr` |
/// | `myAttr` | `mynamespace` | _none_ | `myAttr` | `myAttr` |
/// | `myAttr` | `mynamespace` | `myns` | `myAttr` | `myns:myAttr` |
''');
});
test('references', () {
compare('''
[foo]
[foo bar]
[Sensors](/en-US/docs/Web/API/Sensor_APIs)
[Sensor APIs](/en-US/docs/Web/API/Sensor_APIs)
[FullUrl](http://www.google.com/)
''', '''
/// [foo]
/// [foo bar]
/// [Sensors](https://developer.mozilla.org/en-US/docs/Web/API/Sensor_APIs)
/// [Sensor APIs](https://developer.mozilla.org/en-US/docs/Web/API/Sensor_APIs)
/// [FullUrl](http://www.google.com/)
''');
});
});
}
void compare(String source, String output) {
expect(
formatDocs(source.trimRight(), 80).join('\n'),
output.trimRight(),
);
}