Advertisement
AhmetUstun

13. String Builder (TEST)

Jul 4th, 2021
664
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const StringBuilder = require('../13. String Builder');
  2. const { expect } = require('chai');
  3.  
  4. describe('Tests for StringBuilder Class', () => {
  5.    
  6.     describe('Tests for the Constructor', () => {
  7.        
  8.         it('Should not throw an error if the input is a 1-letter string', () => {
  9.             let instance = new StringBuilder('a');
  10.             expect(() => instance).not.to.throw(TypeError, 'Argument must be a string');
  11.             expect(instance.toString()).to.equal('a');
  12.         });
  13.  
  14.         it('Should not throw an error if the input is a 3-letter string', () => {
  15.             let instance = new StringBuilder('abc');
  16.             expect(() => instance).not.to.throw(TypeError, 'Argument must be a string');
  17.             expect(instance.toString()).to.equal('abc');
  18.         });
  19.  
  20.         it('Should not throw an error if the input is undefined', () => {
  21.             let instance = new StringBuilder();
  22.             expect(() => instance).not.to.throw(TypeError, 'Argument must be a string');
  23.             expect(instance.toString()).to.equal('');
  24.         });
  25.  
  26.         it('Should throw an error if the input is not a string', () => {
  27.             expect(() => new StringBuilder(123)).to.throw(TypeError, 'Argument must be a string');
  28.             expect(() => new StringBuilder(['abc'])).to.throw(TypeError, 'Argument must be a string');
  29.             expect(() => new StringBuilder(null)).to.throw(TypeError, 'Argument must be a string');
  30.         });
  31.     });
  32.  
  33.     describe('Tests for the append Method', () => {
  34.  
  35.         it('Should work as intended when the given input is a string', () => {
  36.             let instance = new StringBuilder('abc');
  37.             instance.append('123');
  38.             expect(instance.toString()).to.equal('abc123');
  39.         });
  40.  
  41.         it('Should throw an error when the given input is not a string', () => {
  42.             let instance1 = new StringBuilder('abc');
  43.             expect(() => instance1.append(undefined)).to.throw(TypeError, 'Argument must be a string');
  44.             let instance2 = new StringBuilder('abc');
  45.             expect(() => instance2.append(123)).to.throw(TypeError, 'Argument must be a string');
  46.             let instance3 = new StringBuilder('abc');
  47.             expect(() => instance3.append()).to.throw(TypeError, 'Argument must be a string');
  48.         });
  49.     });
  50.  
  51.     describe('Tests for the prepend Method', () => {
  52.  
  53.         it('Should work as intended when the given input is a string', () => {
  54.             let instance = new StringBuilder('abc');
  55.             instance.prepend('123');
  56.             expect(instance.toString()).to.equal('123abc');
  57.         });
  58.  
  59.         it('Should throw an error when the given input is not a string', () => {
  60.             let instance1 = new StringBuilder('abc');
  61.             expect(() => instance1.prepend(undefined)).to.throw(TypeError, 'Argument must be a string');
  62.             let instance2 = new StringBuilder('abc');
  63.             expect(() => instance2.prepend(123)).to.throw(TypeError, 'Argument must be a string');
  64.             let instance3 = new StringBuilder('abc');
  65.             expect(() => instance3.prepend()).to.throw(TypeError, 'Argument must be a string');
  66.         });
  67.     });
  68.  
  69.     describe('Tests for the insertAt Method', () => {
  70.  
  71.         it('Should work as intended when the first input is a string', () => {
  72.             let instance1 = new StringBuilder('abc');
  73.             instance1.insertAt('123', 1);
  74.             expect(instance1.toString()).to.equal('a123bc');
  75.             let instance2 = new StringBuilder('abc');
  76.             instance2.insertAt('123', 4);
  77.             expect(instance2.toString()).to.equal('abc123');
  78.             let instance3 = new StringBuilder('abc');
  79.             instance3.insertAt('123');
  80.             expect(instance3.toString()).to.equal('123abc');
  81.             let instance4 = new StringBuilder('abc');
  82.             instance4.insertAt('123', -1);
  83.             expect(instance4.toString()).to.equal('ab123c');
  84.             let instance5 = new StringBuilder('abc');
  85.             instance5.insertAt('123', -4);
  86.             expect(instance5.toString()).to.equal('123abc');
  87.         });
  88.  
  89.         it('Should throw an error when the given input is not a string', () => {
  90.             let instance1 = new StringBuilder('abc');
  91.             expect(() => instance1.insertAt(undefined)).to.throw(TypeError, 'Argument must be a string');
  92.             let instance2 = new StringBuilder('abc');
  93.             expect(() => instance2.insertAt(123, 1)).to.throw(TypeError, 'Argument must be a string');
  94.             let instance3 = new StringBuilder('abc');
  95.             expect(() => instance3.insertAt(123)).to.throw(TypeError, 'Argument must be a string');
  96.             let instance4 = new StringBuilder('abc');
  97.             expect(() => instance4.insertAt()).to.throw(TypeError, 'Argument must be a string');
  98.         });
  99.     });
  100.  
  101.     describe('Tests for the remove Method', () => {
  102.        
  103.         it('Should work as intended when the input is as wanted', () => {
  104.             let instance1 = new StringBuilder('abc');
  105.             instance1.remove(1, 0);
  106.             expect(instance1.toString()).to.equal('abc');
  107.             let instance2 = new StringBuilder('abc');
  108.             instance2.remove(0, 1);
  109.             expect(instance2.toString()).to.equal('bc');
  110.             let instance3 = new StringBuilder('abc');
  111.             instance3.remove(4, 1);
  112.             expect(instance3.toString()).to.equal('abc');
  113.             let instance4 = new StringBuilder('abc');
  114.             instance4.remove(1, 4);
  115.             expect(instance4.toString()).to.equal('a');
  116.             let instance5 = new StringBuilder('abc');
  117.             instance5.remove();
  118.             expect(instance5.toString()).to.equal('abc');
  119.         });
  120.     });
  121. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement