From 8184e0824b86127286fd83fe05b6726e22bdc6c9 Mon Sep 17 00:00:00 2001
From: Daniel Imms <2193314+Tyriar@users.noreply.github.com>
Date: Sat, 23 Jul 2022 10:13:26 -0700
Subject: [PATCH] Add tests for dom underline styles
---
.../dom/DomRendererRowFactory.test.ts | 66 ++++++++++++++++---
1 file changed, 57 insertions(+), 9 deletions(-)
diff --git a/src/browser/renderer/dom/DomRendererRowFactory.test.ts b/src/browser/renderer/dom/DomRendererRowFactory.test.ts
index db5d258ef..026d8881e 100644
--- a/src/browser/renderer/dom/DomRendererRowFactory.test.ts
+++ b/src/browser/renderer/dom/DomRendererRowFactory.test.ts
@@ -6,7 +6,7 @@
import jsdom = require('jsdom');
import { assert } from 'chai';
import { DomRendererRowFactory } from 'browser/renderer/dom/DomRendererRowFactory';
-import { NULL_CELL_CODE, NULL_CELL_WIDTH, NULL_CELL_CHAR, DEFAULT_ATTR, FgFlags, BgFlags, Attributes } from 'common/buffer/Constants';
+import { NULL_CELL_CODE, NULL_CELL_WIDTH, NULL_CELL_CHAR, DEFAULT_ATTR, FgFlags, BgFlags, Attributes, UnderlineStyle } from 'common/buffer/Constants';
import { BufferLine, DEFAULT_ATTR_DATA } from 'common/buffer/BufferLine';
import { IBufferLine } from 'common/Types';
import { CellData } from 'common/buffer/CellData';
@@ -129,14 +129,62 @@ describe('DomRendererRowFactory', () => {
);
});
- it('should add class for underline', () => {
- const cell = CellData.fromCharData([0, 'a', 1, 'a'.charCodeAt(0)]);
- cell.fg = DEFAULT_ATTR_DATA.fg | FgFlags.UNDERLINE;
- lineData.setCell(0, cell);
- const fragment = rowFactory.createRow(lineData, 0, false, undefined, 0, false, 5, 20);
- assert.equal(getFragmentHtml(fragment),
- 'a'
- );
+ describe('underline', () => {
+ it('should add class for straight underline style', () => {
+ const cell = CellData.fromCharData([0, 'a', 1, 'a'.charCodeAt(0)]);
+ cell.fg = DEFAULT_ATTR_DATA.fg | FgFlags.UNDERLINE;
+ cell.bg = DEFAULT_ATTR_DATA.bg | BgFlags.HAS_EXTENDED;
+ cell.extended.underlineStyle = UnderlineStyle.SINGLE;
+ lineData.setCell(0, cell);
+ const fragment = rowFactory.createRow(lineData, 0, false, undefined, 0, false, 5, 20);
+ assert.equal(getFragmentHtml(fragment),
+ 'a'
+ );
+ });
+ it('should add class for double underline style', () => {
+ const cell = CellData.fromCharData([0, 'a', 1, 'a'.charCodeAt(0)]);
+ cell.fg = DEFAULT_ATTR_DATA.fg | FgFlags.UNDERLINE;
+ cell.bg = DEFAULT_ATTR_DATA.bg | BgFlags.HAS_EXTENDED;
+ cell.extended.underlineStyle = UnderlineStyle.DOUBLE;
+ lineData.setCell(0, cell);
+ const fragment = rowFactory.createRow(lineData, 0, false, undefined, 0, false, 5, 20);
+ assert.equal(getFragmentHtml(fragment),
+ 'a'
+ );
+ });
+ it('should add class for curly underline style', () => {
+ const cell = CellData.fromCharData([0, 'a', 1, 'a'.charCodeAt(0)]);
+ cell.fg = DEFAULT_ATTR_DATA.fg | FgFlags.UNDERLINE;
+ cell.bg = DEFAULT_ATTR_DATA.bg | BgFlags.HAS_EXTENDED;
+ cell.extended.underlineStyle = UnderlineStyle.CURLY;
+ lineData.setCell(0, cell);
+ const fragment = rowFactory.createRow(lineData, 0, false, undefined, 0, false, 5, 20);
+ assert.equal(getFragmentHtml(fragment),
+ 'a'
+ );
+ });
+ it('should add class for double dotted style', () => {
+ const cell = CellData.fromCharData([0, 'a', 1, 'a'.charCodeAt(0)]);
+ cell.fg = DEFAULT_ATTR_DATA.fg | FgFlags.UNDERLINE;
+ cell.bg = DEFAULT_ATTR_DATA.bg | BgFlags.HAS_EXTENDED;
+ cell.extended.underlineStyle = UnderlineStyle.DOTTED;
+ lineData.setCell(0, cell);
+ const fragment = rowFactory.createRow(lineData, 0, false, undefined, 0, false, 5, 20);
+ assert.equal(getFragmentHtml(fragment),
+ 'a'
+ );
+ });
+ it('should add class for dashed underline style', () => {
+ const cell = CellData.fromCharData([0, 'a', 1, 'a'.charCodeAt(0)]);
+ cell.fg = DEFAULT_ATTR_DATA.fg | FgFlags.UNDERLINE;
+ cell.bg = DEFAULT_ATTR_DATA.bg | BgFlags.HAS_EXTENDED;
+ cell.extended.underlineStyle = UnderlineStyle.DASHED;
+ lineData.setCell(0, cell);
+ const fragment = rowFactory.createRow(lineData, 0, false, undefined, 0, false, 5, 20);
+ assert.equal(getFragmentHtml(fragment),
+ 'a'
+ );
+ });
});
it('should add class for strikethrough', () => {