const { expect } = require('chai');

const Base64 = artifacts.require('$Base64');

contract('Strings', function () {
  beforeEach(async function () {
    this.base64 = await Base64.new();
  });

  describe('from bytes - base64', function () {
    it('converts to base64 encoded string with double padding', async function () {
      const TEST_MESSAGE = 'test';
      const input = web3.utils.asciiToHex(TEST_MESSAGE);
      expect(await this.base64.$encode(input)).to.equal('dGVzdA==');
    });

    it('converts to base64 encoded string with single padding', async function () {
      const TEST_MESSAGE = 'test1';
      const input = web3.utils.asciiToHex(TEST_MESSAGE);
      expect(await this.base64.$encode(input)).to.equal('dGVzdDE=');
    });

    it('converts to base64 encoded string without padding', async function () {
      const TEST_MESSAGE = 'test12';
      const input = web3.utils.asciiToHex(TEST_MESSAGE);
      expect(await this.base64.$encode(input)).to.equal('dGVzdDEy');
    });

    it('empty bytes', async function () {
      expect(await this.base64.$encode([])).to.equal('');
    });
  });
});
