diff --git a/src/tools/mac-address-converter/mac-address-converter.service.test.ts b/src/tools/mac-address-converter/mac-address-converter.service.test.ts new file mode 100644 index 00000000..69319e3a --- /dev/null +++ b/src/tools/mac-address-converter/mac-address-converter.service.test.ts @@ -0,0 +1,15 @@ +import { describe, expect, it } from 'vitest'; +import { convertMacCISCO, convertMacCanonical, convertMacCanonicalIEEE, convertMacCanonicalIETF } from './mac-address-converter.service'; + +describe('mac-address-converter', () => { + it('Convert MAC Address to given format', async () => { + expect(convertMacCanonical('')).to.equal(''); + + const macValue = 'AA:BB:CC:DD:EE:FF'; + + expect(convertMacCanonicalIETF(macValue)).to.equal('aa:bb:cc:dd:ee:ff'); + expect(convertMacCanonical(macValue)).to.equal('AA.BB.CC.DD.EE.FF'); + expect(convertMacCanonicalIEEE(macValue)).to.equal('AA-BB-CC-DD-EE-FF'); + expect(convertMacCISCO(macValue)).to.equal('aabb.ccdd.eeff'); + }); +}); diff --git a/src/tools/mac-address-converter/mac-address-converter.service.ts b/src/tools/mac-address-converter/mac-address-converter.service.ts new file mode 100644 index 00000000..c902a694 --- /dev/null +++ b/src/tools/mac-address-converter/mac-address-converter.service.ts @@ -0,0 +1,17 @@ +function convertMac(mac: string, group: number = 2, char: string = ':'): string { + mac = mac.replace(/[\W_]+/g, ''); + return mac.match(new RegExp(`.{1,${group}}`, 'g'))?.join(char) || ''; +} + +export function convertMacCanonicalIETF(mac: string): string { + return convertMac(mac.toLocaleLowerCase()); +}; +export function convertMacCanonical(mac: string): string { + return convertMac(mac, 2, '.'); +}; +export function convertMacCanonicalIEEE(mac: string): string { + return convertMac(mac.toLocaleUpperCase(), 2, '-'); +}; +export function convertMacCISCO(mac: string): string { + return convertMac(mac.toLocaleLowerCase(), 4, '.'); +}; diff --git a/src/tools/mac-address-converter/mac-address-converter.vue b/src/tools/mac-address-converter/mac-address-converter.vue index 3148610c..b2883941 100644 --- a/src/tools/mac-address-converter/mac-address-converter.vue +++ b/src/tools/mac-address-converter/mac-address-converter.vue @@ -1,29 +1,25 @@