Skip to content

Commit

Permalink
feat(EAN): Add EAN8 - EAN13 support
Browse files Browse the repository at this point in the history
  • Loading branch information
stonelasley committed Jan 23, 2019
1 parent c5eb5f8 commit a7a2231
Show file tree
Hide file tree
Showing 7 changed files with 90 additions and 0 deletions.
6 changes: 6 additions & 0 deletions src/__tests__/config/aim-codes.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,10 @@ describe('AimCodes', () => {
expect(AimCodes.CODE128).toBe(']C0');
});
});

describe('EAN13', () => {
it('should return EAN code', () => {
expect(AimCodes.EAN13).toBe(']E4');
});
});
});
28 changes: 28 additions & 0 deletions src/__tests__/readers/ean-13.reader.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import { IReaderConfiguration } from '../../models';
import { Ean13Reader } from '../../readers';

describe('Ean13Reader', () => {
const config = {} as IReaderConfiguration;
let classUnderTest: Ean13Reader;

beforeEach(() => {
classUnderTest = new Ean13Reader(config);
});

describe('validate', () => {
test('should validate value length', () => {
/* tslint:disable */
expect(classUnderTest['validate'](']E41111111111111')).toBe(true);
expect(classUnderTest['validate'](']E411111111111111')).toBe(false);
expect(classUnderTest['validate'](']E411111')).toBe(false);
/* tslint:enable */
});

test('should validate character type', () => {
/* tslint:disable */
expect(classUnderTest['validate'](']E41111111111111')).toBe(true);
expect(classUnderTest['validate'](']E4aaaaaaaaaaaaa')).toBe(false);
/* tslint:enable */
});
});
});
28 changes: 28 additions & 0 deletions src/__tests__/readers/ean-8.reader.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import { IReaderConfiguration } from '../../models';
import { Ean8Reader } from '../../readers';

describe('Ean8Reader', () => {
const config = {} as IReaderConfiguration;
let classUnderTest: Ean8Reader;

beforeEach(() => {
classUnderTest = new Ean8Reader(config);
});

describe('validate', () => {
test('should validate value length', () => {
/* tslint:disable */
expect(classUnderTest['validate'](']E411111111')).toBe(true);
expect(classUnderTest['validate'](']E411111111111111')).toBe(false);
expect(classUnderTest['validate'](']E411111')).toBe(false);
/* tslint:enable */
});

test('should validate character type', () => {
/* tslint:disable */
expect(classUnderTest['validate'](']E411111111')).toBe(true);
expect(classUnderTest['validate'](']E4aaaaaaaa')).toBe(false);
/* tslint:enable */
});
});
});
2 changes: 2 additions & 0 deletions src/config/aim-codes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,6 @@ export enum AimCodes {
ITF = ']I0',
CODE39 = ']A0',
CODE128 = ']C0',
EAN13 = ']E4',
EAN8 = ']E0',
}
11 changes: 11 additions & 0 deletions src/readers/ean-13.reader.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { IReaderConfiguration } from '../models';
import { BaseGtinReader } from './base-gtin.reader';
import { Symbologies } from '../config';

const REG: RegExp = /^\]E0[0-9]{13,13}$/;

export class Ean13Reader extends BaseGtinReader {
constructor(readerConfig?: IReaderConfiguration) {
super(Symbologies.GTIN13, REG, readerConfig);
}
}
11 changes: 11 additions & 0 deletions src/readers/ean-8.reader.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { IReaderConfiguration } from '../models';
import { BaseGtinReader } from './base-gtin.reader';
import { Symbologies } from '../config';

const REG: RegExp = /^\]E4[0-9]{8,8}$/;

export class Ean8Reader extends BaseGtinReader {
constructor(readerConfig?: IReaderConfiguration) {
super(Symbologies.GTIN8, REG, readerConfig);
}
}
4 changes: 4 additions & 0 deletions src/readers/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,12 @@ import { Itf12Reader } from './itf-12.reader';
import { Itf13Reader } from './itf-13.reader';
import { Itf14Reader } from './itf-14.reader';
import { Code128Reader } from './code-128.reader';
import { Ean13Reader } from './ean-13.reader';

export {
Code39Reader,
Code128Reader,
Ean13Reader,
Gtin8Reader,
Gtin12Reader,
Gtin13Reader,
Expand All @@ -27,6 +29,7 @@ export {
export const READERS = [
Code39Reader,
Code128Reader,
Ean13Reader,
Gtin8Reader,
Gtin12Reader,
Gtin13Reader,
Expand All @@ -41,6 +44,7 @@ export const READERS = [
export const READER_TYPES = {
code_39: Code39Reader,
code_128: Code128Reader,
ean_13: Ean13Reader,
gs1_128: GS1Reader,
gtin_12: Gtin12Reader,
gtin_13: Gtin13Reader,
Expand Down

0 comments on commit a7a2231

Please sign in to comment.