aboutsummaryrefslogtreecommitdiff
path: root/src/tools/mac-address-generator/mac-adress-generator.models.test.ts
blob: 5b660250bac2722e6b751a224f8ac40d1808db38 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import { describe, expect, it } from 'vitest';
import { generateRandomMacAddress, splitPrefix } from './mac-adress-generator.models';

describe('mac-adress-generator models', () => {
  describe('splitPrefix', () => {
    it('a mac address prefix is splitted around non hex characters', () => {
      expect(splitPrefix('')).toEqual([]);
      expect(splitPrefix('01')).toEqual(['01']);
      expect(splitPrefix('01:')).toEqual(['01']);
      expect(splitPrefix('01:23')).toEqual(['01', '23']);
      expect(splitPrefix('01-23')).toEqual(['01', '23']);
    });

    it('when a prefix contains only hex characters, they are grouped by 2', () => {
      expect(splitPrefix('0123')).toEqual(['01', '23']);
      expect(splitPrefix('012345')).toEqual(['01', '23', '45']);
      expect(splitPrefix('0123456')).toEqual(['01', '23', '45', '06']);
    });
  });

  describe('generateRandomMacAddress', () => {
    const createRandomByteGenerator = () => {
      let i = 0;
      return () => (i++).toString(16).padStart(2, '0');
    };

    it('generates a random mac address', () => {
      expect(generateRandomMacAddress({ getRandomByte: createRandomByteGenerator() })).toBe('00:01:02:03:04:05');
    });

    it('generates a random mac address with a prefix', () => {
      expect(generateRandomMacAddress({ prefix: 'ff:ee:aa', getRandomByte: createRandomByteGenerator() })).toBe('ff:ee:aa:00:01:02');
      expect(generateRandomMacAddress({ prefix: 'ff:ee:a', getRandomByte: createRandomByteGenerator() })).toBe('ff:ee:0a:00:01:02');
    });

    it('generates a random mac address with a prefix and a different separator', () => {
      expect(generateRandomMacAddress({ prefix: 'ff-ee-aa', separator: '-', getRandomByte: createRandomByteGenerator() })).toBe('ff-ee-aa-00-01-02');
      expect(generateRandomMacAddress({ prefix: 'ff:ee:aa', separator: '-', getRandomByte: createRandomByteGenerator() })).toBe('ff-ee-aa-00-01-02');
      expect(generateRandomMacAddress({ prefix: 'ff-ee:aa', separator: '-', getRandomByte: createRandomByteGenerator() })).toBe('ff-ee-aa-00-01-02');
      expect(generateRandomMacAddress({ prefix: 'ff ee:aa', separator: '-', getRandomByte: createRandomByteGenerator() })).toBe('ff-ee-aa-00-01-02');
    });
  });
});