mirror of
https://github.com/ComposioHQ/composio.git
synced 2026-09-22 11:46:35 +08:00
1d02d3e495
Co-authored-by: jkomyno <12381818+jkomyno@users.noreply.github.com>
124 lines
3.0 KiB
TypeScript
124 lines
3.0 KiB
TypeScript
import { expect, test } from 'vitest';
|
|
|
|
import { Writer } from './Writer';
|
|
|
|
test('write string', () => {
|
|
const writer = new Writer(0, undefined);
|
|
writer.write('A').write('B').write('C');
|
|
expect(writer.toString()).toBe('ABC');
|
|
});
|
|
|
|
test('write builder', () => {
|
|
const builder = {
|
|
write(writer: Writer) {
|
|
writer.write('hello from builder');
|
|
},
|
|
};
|
|
const writer = new Writer(0, undefined);
|
|
writer.write(builder);
|
|
expect(writer.toString()).toBe('hello from builder');
|
|
});
|
|
|
|
test('newLine', () => {
|
|
const writer = new Writer(0, undefined);
|
|
writer.newLine();
|
|
expect(writer.toString()).toBe('\n');
|
|
});
|
|
|
|
test('writeLine', () => {
|
|
const writer = new Writer(0, undefined);
|
|
writer.writeLine('A').writeLine('B').writeLine('C');
|
|
expect(writer.toString()).toBe('A\nB\nC\n');
|
|
});
|
|
|
|
test('writeJoined with strings', () => {
|
|
const writer = new Writer(0, undefined);
|
|
writer.writeJoined(', ', ['A', 'B', 'C']);
|
|
expect(writer.toString()).toBe('A, B, C');
|
|
});
|
|
|
|
test('writeJoined with builder values', () => {
|
|
const writer = new Writer(0, undefined);
|
|
|
|
const builder = {
|
|
write(writer: Writer) {
|
|
writer.write('builder');
|
|
},
|
|
};
|
|
writer.writeJoined(', ', [builder, builder, builder]);
|
|
expect(writer.toString()).toBe('builder, builder, builder');
|
|
});
|
|
|
|
test('writeJoined with builder separator', () => {
|
|
const writer = new Writer(0, undefined);
|
|
|
|
const separator = {
|
|
write(writer: Writer) {
|
|
writer.write('|');
|
|
},
|
|
};
|
|
writer.writeJoined(separator, ['A', 'B', 'C']);
|
|
expect(writer.toString()).toBe('A|B|C');
|
|
});
|
|
|
|
test('writeJoined empty', () => {
|
|
const writer = new Writer(0, undefined);
|
|
writer.writeJoined(', ', []);
|
|
expect(writer.toString()).toBe('');
|
|
});
|
|
|
|
test('indent', () => {
|
|
const writer = new Writer(0, undefined);
|
|
writer.indent().write('A');
|
|
expect(writer.toString()).toBe(' A');
|
|
});
|
|
|
|
test('indent + unindent', () => {
|
|
const writer = new Writer(0, undefined);
|
|
writer.writeLine('A').indent().writeLine('B').unindent().writeLine('C');
|
|
expect(writer.toString()).toBe('A\n B\nC\n');
|
|
});
|
|
|
|
test('unindent beyond 0', () => {
|
|
const writer = new Writer(0, undefined);
|
|
writer.unindent().unindent().write('A');
|
|
expect(writer.toString()).toBe('A');
|
|
});
|
|
|
|
test('withIndent', () => {
|
|
const writer = new Writer(0, undefined);
|
|
writer
|
|
.writeLine('A')
|
|
.withIndent(() => writer.writeLine('B'))
|
|
.writeLine('C');
|
|
expect(writer.toString()).toBe('A\n B\nC\n');
|
|
});
|
|
|
|
test('after next newline callback', () => {
|
|
const writer = new Writer(0, undefined);
|
|
writer.afterNextNewline(() => {
|
|
writer.writeLine('---');
|
|
});
|
|
writer.writeLine('foo');
|
|
writer.writeLine('bar');
|
|
expect(writer.toString()).toBe('foo\n---\nbar\n');
|
|
});
|
|
|
|
test('margin symbol', () => {
|
|
const writer = new Writer(0, undefined);
|
|
writer
|
|
.writeLine('{')
|
|
.withIndent(() => {
|
|
writer.addMarginSymbol('+').writeLine('foo').writeLine('bar');
|
|
})
|
|
.writeLine('}');
|
|
|
|
expect(writer.toString()).toMatchInlineSnapshot(`
|
|
"{
|
|
+ foo
|
|
bar
|
|
}
|
|
"
|
|
`);
|
|
});
|