Skip to content

Commit

Permalink
Simplify and fix flip (#879)
Browse files Browse the repository at this point in the history
* Write missing tests for the Flip plugin

* Remove broken code branch in Flip plugin

Removing this unnecessary "shortcut":

- Has no bad effect on complexity
- Removes dependency on Rotate plugin
- Fixes #829
- Actually shortens and simplifies the implementation
  • Loading branch information
skalee committed Apr 20, 2020
1 parent dd7a6ba commit e93497a
Show file tree
Hide file tree
Showing 2 changed files with 99 additions and 5 deletions.
5 changes: 0 additions & 5 deletions packages/plugin-flip/src/index.js
Expand Up @@ -15,11 +15,6 @@ function flipFn(horizontal, vertical, cb) {
cb
);

if (horizontal && vertical) {
// shortcut
return this.rotate(180, true, cb);
}

const bitmap = Buffer.alloc(this.bitmap.data.length);
this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, function(
x,
Expand Down
99 changes: 99 additions & 0 deletions packages/plugin-flip/test/flipping.test.js
@@ -0,0 +1,99 @@
import { Jimp, mkJGD } from '@jimp/test-utils';

import configure from '@jimp/custom';

import flip from '../src';

const jimp = configure({ plugins: [flip] }, Jimp);

describe('Flipping plugin', () => {
it('can flip horizontally', async () => {
const src = await jimp.read(
mkJGD(
'AAAABBBB',
'AAABAAAB',
'ABABABAB',
'CCCCCCCC',
'CCCCCCCC',
'CCCCCCCC',
'AACCCCAA'
)
);

const result = src.flip(true, false);

result
.getJGDSync()
.should.be.sameJGD(
mkJGD(
'BBBBAAAA',
'BAAABAAA',
'BABABABA',
'CCCCCCCC',
'CCCCCCCC',
'CCCCCCCC',
'AACCCCAA'
)
);
});

it('can flip vertically', async () => {
const src = await jimp.read(
mkJGD(
'AAAABBBB',
'AAABAAAB',
'ABABABAB',
'CCCCCCCC',
'CCCCCCCC',
'CCCCCCCC',
'AACCCCAA'
)
);

const result = src.flip(false, true);

result
.getJGDSync()
.should.be.sameJGD(
mkJGD(
'AACCCCAA',
'CCCCCCCC',
'CCCCCCCC',
'CCCCCCCC',
'ABABABAB',
'AAABAAAB',
'AAAABBBB'
)
);
});

it('can flip both horizontally and vertically at once', async () => {
const src = await jimp.read(
mkJGD(
'AAAABBBB',
'AAABAAAB',
'ABABABAB',
'CCCCCCCC',
'CCCCCCCC',
'CCCCCCCC',
'AACCCCAA'
)
);

const result = src.flip(true, true);

result
.getJGDSync()
.should.be.sameJGD(
mkJGD(
'AACCCCAA',
'CCCCCCCC',
'CCCCCCCC',
'CCCCCCCC',
'BABABABA',
'BAAABAAA',
'BBBBAAAA'
)
);
});
});

0 comments on commit e93497a

Please sign in to comment.