    @Test
    public void testSuperHash() throws IOException {

        HashCalculator hashCalculator = new HashCalculator();
        File originFile = new File(URLDecoder.decode(getClass().getResource("/superHash/origin.txt").getFile(), "utf-8"));
        HashCalculationResult originFileHashResult = hashCalculator.calculateSuperHash(originFile);

        File whitespaceChangesFile = new File(URLDecoder.decode(getClass().getResource("/superHash/whitespace-changes.txt").getFile(), "utf-8"));
        HashCalculationResult whitespaceFileHashResult = hashCalculator.calculateSuperHash(whitespaceChangesFile);

        File msbTestFile = new File(URLDecoder.decode(getClass().getResource("/superHash/msb-test.txt").getFile(), "utf-8"));
        HashCalculationResult msbTestFileHashResult = hashCalculator.calculateSuperHash(msbTestFile);

        File lsbTestFile = new File(URLDecoder.decode(getClass().getResource("/superHash/lsb-test.txt").getFile(), "utf-8"));
        HashCalculationResult lsbTestFileHashResult = hashCalculator.calculateSuperHash(lsbTestFile);

        Assert.assertEquals("Files must match despite whitespace changes", originFileHashResult.getFullHash(), whitespaceFileHashResult.getFullHash());
        Assert.assertEquals("File msb hashes must match", originFileHashResult.getMostSigBitsHash(), msbTestFileHashResult.getMostSigBitsHash());
        Assert.assertEquals("File lsb hashes must match", originFileHashResult.getLeastSigBitsHash(), lsbTestFileHashResult.getLeastSigBitsHash());

        File smallFile = new File(URLDecoder.decode(getClass().getResource("/superHash/small-file.txt").getFile(), "utf-8"));
        HashCalculationResult smallFileHashResult = hashCalculator.calculateSuperHash(smallFile);
        assertNull(smallFileHashResult);
    }