it("does not scan given file twice", function () {
            var fileSystemStrategy = new SynchronousFileSystemStrategy(),
                fileSystemScanner,
                scanningProcess,
                scanningStrategy = new FileScanningStrategy(/.*/);

            fileSystemScanner = new RememberingFileSystemScanner(scanningStrategy, fileSystemStrategy);

            assert.ok(!fileSystemScanner.isFileScanned(__filename));
            assert.ok(!fileSystemScanner.isPathScanned(__filename));
            scanningProcess = fileSystemScanner.scanFile(__filename);

            assert.ok(fileSystemScanner.isFileScanned(__filename));
            assert.ok(fileSystemScanner.isPathScanned(__filename));
            assert.deepEqual(scanningProcess.foundFiles, [__filename]);

            scanningProcess = fileSystemScanner.scanFile(__filename);
            assert.deepEqual(scanningProcess.foundFiles, [__filename]);
        });
        it("does not scan given directory twice", function () {
            var fileSystemStrategy = new SynchronousFileSystemStrategy(),
                fileSystemScanner,
                scanningProcess,
                scanningStrategy = new DirectoryScanningStrategy(/.*/);

            fileSystemScanner = new RememberingFileSystemScanner(scanningStrategy, fileSystemStrategy);

            assert.ok(!fileSystemScanner.isDirectoryScanned(__dirname));
            assert.ok(!fileSystemScanner.isPathScanned(__dirname));
            scanningProcess = fileSystemScanner.scanDirectory(__dirname);

            assert.ok(fileSystemScanner.isDirectoryScanned(__dirname));
            assert.ok(fileSystemScanner.isPathScanned(__dirname));
            assert.deepEqual(scanningProcess.foundDirectories, [__dirname]);

            scanningProcess = fileSystemScanner.scanDirectory(__dirname);
            assert.deepEqual(scanningProcess.foundDirectories, [__dirname]);
        });