UNPKG

howsmydriving-utils

Version:

Utilities used by howsmydriving package any howsmydriving-[region] plug-in modules.

103 lines (102 loc) 4.92 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var string_utils_1 = require("../src/util/string_utils"); var assert = require('assert'); describe('Line choppping', function () { describe('chop empty line', function () { it('should return an empty line', function () { var result = string_utils_1.SplitLongLines([''], 10); assert.equal(result.length, 1); assert.equal(result[0], ''); }); }); describe('chop line into 6 pieces', function () { it('should return 6 strings chopped on word breaks', function () { var test_string = [ 'Here is a ', 'line that ', 'is a lot ', 'more than ', 'ten chars ', 'long.' ]; var result = string_utils_1.SplitLongLines([test_string.join('')], 10); assert.equal(result.length, test_string.length); for (var i = 0; i < result.length; i++) { assert.equal(result[i], test_string[i]); } }); }); describe('chop line with word longer than limit', function () { it('should return strings chopped on a word break except for long work, chopped at limit', function () { var test_string = [ 'Here is a ', 'line with ', 'areallylon', 'gwordthatc', 'annotbecho', 'pped to ', 'something ', 'smaller.' ]; var result = string_utils_1.SplitLongLines([test_string.join('')], 10); assert.equal(result.length, test_string.length); for (var i = 0; i < result.length; i++) { assert.equal(result[i], test_string[i]); } }); }); describe('chop line on carriage returns', function () { it('should return a string per line, without the line break', function () { var test_string = [ 'Here is', 'a string', 'with three lines.' // this line will get split ]; var result = string_utils_1.SplitLongLines([test_string.join('\n')], 10); assert.equal(result.length, test_string.length + 2); assert.equal(result[0], test_string[0]); assert.equal(result[1], test_string[1]); assert.equal(result[2] + result[3] + result[4], test_string[2]); }); }); describe('handle a real set of tweets', function () { it('should have multiple violations in each tweet', function () { var test_string = [ 'Total parking and camera violations for #WA:ATT2936: 23\n' + 'PARKING: 23', '01/31/2015, PARKING, 1102 E PINE ST, PAID\n' + '09/15/2015, PARKING, 450 N 36TH ST, PAID\n' + '01/06/2016, PARKING, 605 NE 68TH ST, PAID\n' + '01/12/2016, PARKING, 2409 1ST AVE, PAID\n' + '07/06/2016, PARKING, 2019 FAIRVIEW AVE E, PAID\n' + '07/26/2016, PARKING, 409 NE 70TH ST, PAID\n' + '10/26/2016, PARKING, 5639 UNIVERSITY WAY NE, PAID\n' + '11/28/2016, PARKING, 5602 BROOKLYN AVE NE, PAID\n' + '11/28/2016, PARKING, 4508 UNIVERSITY WAY NE, PAID\n' + '03/19/2018, PARKING, 2001 FAIRVIEW AVE E, PAID\n' + '04/19/2018, PARKING, 1403 NW 54TH ST, PAID\n' + '05/02/2018, PARKING, 5601 UNIVERSITY WAY NE, PAID\n' + '08/15/2018, PARKING, 311 NE MAPLE LEAF PL, PAID\n' + '10/19/2018, PARKING, 5522 UNIVERSITY WAY NE, PAID\n' + '03/05/2019, PARKING, 4709 UNIVERSITY WAY NE, PAID\n' + '04/02/2019, PARKING, 4709 UNIVERSITY WAY NE, PAID\n' + '04/25/2019, PARKING, 7208 E GREEN LAKE DR N, PAID\n' + '09/10/2019, PARKING, 7208 E GREEN LAKE DR N, PAID\n' + '09/13/2019, PARKING, 2001 FAIRVIEW AVE E, PAID\n' + '09/16/2019, PARKING, 7208 E GREEN LAKE DR N, PAID\n' + '10/11/2019, PARKING, 3617 15TH AVE NE, PAID\n' + '10/14/2019, PARKING, 7208 E GREEN LAKE DR N, PAID\n' + '10/28/2019, PARKING, 308 NE 72ND ST, ACTIVE', 'Violations by status for #WA:ATT2936:\n' + 'PAID: 22\n' + 'ACTIVE: 1', 'Violations by year for #WA:ATT2936:\n' + '2015: 2\n' + '2016: 7\n' + '2018: 5\n' + '2019: 9' ]; var result = string_utils_1.SplitLongLines(test_string, 280); assert.equal(result.length, 8); }); }); });