Skip to content

Commit d14371c

Browse files
committed
fix: refactor with unit test
1 parent 00b85de commit d14371c

File tree

3 files changed

+37
-9
lines changed

3 files changed

+37
-9
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { describe, expect, it } from 'vitest';
2+
import { convertMacCISCO, convertMacCanonical, convertMacCanonicalIEEE, convertMacCanonicalIETF } from './mac-address-converter.service';
3+
4+
describe('mac-address-converter', () => {
5+
it('Convert MAC Address to given format', async () => {
6+
expect(convertMacCanonical('')).to.equal('');
7+
8+
const macValue = 'AA:BB:CC:DD:EE:FF';
9+
10+
expect(convertMacCanonicalIETF(macValue)).to.equal('aa:bb:cc:dd:ee:ff');
11+
expect(convertMacCanonical(macValue)).to.equal('AA.BB.CC.DD.EE.FF');
12+
expect(convertMacCanonicalIEEE(macValue)).to.equal('AA-BB-CC-DD-EE-FF');
13+
expect(convertMacCISCO(macValue)).to.equal('aabb.ccdd.eeff');
14+
});
15+
});
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
function convertMac(mac: string, group: number = 2, char: string = ':'): string {
2+
mac = mac.replace(/[\W_]+/g, '');
3+
return mac.match(new RegExp(`.{1,${group}}`, 'g'))?.join(char) || '';
4+
}
5+
6+
export function convertMacCanonicalIETF(mac: string): string {
7+
return convertMac(mac.toLocaleLowerCase());
8+
};
9+
export function convertMacCanonical(mac: string): string {
10+
return convertMac(mac, 2, '.');
11+
};
12+
export function convertMacCanonicalIEEE(mac: string): string {
13+
return convertMac(mac.toLocaleUpperCase(), 2, '-');
14+
};
15+
export function convertMacCISCO(mac: string): string {
16+
return convertMac(mac.toLocaleLowerCase(), 4, '.');
17+
};

src/tools/mac-address-converter/mac-address-converter.vue

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,25 @@
11
<script setup lang="ts">
22
import InputCopyable from '../../components/InputCopyable.vue';
3-
4-
function convertMac(mac: string, group: number = 2, char: string = ':'): string {
5-
mac = mac.replace(/[\W_]+/g, '');
6-
return mac.match(new RegExp(`.{1,${group}}`, 'g'))!.join(char);
7-
}
3+
import { convertMacCISCO, convertMacCanonical, convertMacCanonicalIEEE, convertMacCanonicalIETF } from './mac-address-converter.service';
84
95
const input = ref('AA:BB:CC:DD:EE:FF');
106
117
const formats = computed(() => [
128
{
139
label: 'Canonical IETF Format:',
14-
value: convertMac(input.value.toLocaleLowerCase()),
10+
value: convertMacCanonicalIETF(input.value),
1511
},
1612
{
1713
label: 'Canonical Format:',
18-
value: convertMac(input.value, 2, '.'),
14+
value: convertMacCanonical(input.value),
1915
},
2016
{
2117
label: 'Canonical IEEE Format:',
22-
value: convertMac(input.value.toLocaleUpperCase(), 2, '-'),
18+
value: convertMacCanonicalIEEE(input.value),
2319
},
2420
{
2521
label: 'Cisco:',
26-
value: convertMac(input.value.toLocaleLowerCase(), 4, '.'),
22+
value: convertMacCISCO(input.value),
2723
},
2824
]);
2925

0 commit comments

Comments
 (0)