blob: 6cad99e2a9355915f59f53b321ffc536b0215a75 [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());
}