public void setExpectations(Expectations expectations) {
      try {
        expectations.allowing(mock).getCanonicalFile();
        expectations.will(expectations.returnValue(mock));
      } catch (IOException th) {
        // ignore
      }
      expectations.allowing(mock).isFile();
      expectations.will(expectations.returnValue(isFile));
      expectations.allowing(mock).getName();
      expectations.will(expectations.returnValue(name));
      expectations.allowing(mock).exists();
      expectations.will(expectations.returnValue(true));

      ArrayList<File> mockChildren = new ArrayList<File>(children.size());
      for (MockFile child : children) {
        mockChildren.add(child.getMock());
        child.setExpectations(expectations);
      }
      expectations.allowing(mock).listFiles();
      expectations.will(
          expectations.returnValue(mockChildren.toArray(new File[mockChildren.size()])));
    }
  @Test
  public void walkDepthFirst() throws IOException {

    walker = new DefaultDirectoryWalker(visitor).depthFirst();

    final MockFile root = new MockFile(context, "root", false);
    final MockFile rootFile1 = root.addFile("rootFile1");
    final MockFile dir1 = root.addDir("dir1");
    final MockFile dirFile1 = dir1.addFile("dirFile1");
    final MockFile dirFile2 = dir1.addFile("dirFile2");
    final MockFile rootFile2 = root.addFile("rootFile2");
    root.setExpectations();

    final Sequence visiting = context.sequence("visiting");
    context.checking(
        new Expectations() {
          {
            one(visitor).visitFile(with(file(rootFile1)));
            inSequence(visiting);
            one(visitor).visitFile(with(file(rootFile2)));
            inSequence(visiting);
            one(visitor).visitFile(with(file(dirFile1)));
            inSequence(visiting);
            one(visitor).visitFile(with(file(dirFile2)));
            inSequence(visiting);
            one(visitor).visitDir(with(file(dir1)));
            inSequence(visiting);
          }
        });

    walker.start(root.getMock());
  }
  @Test
  public void rootDirEmpty() throws IOException {
    final MockFile root = new MockFile(context, "root", false);

    walker = new DefaultDirectoryWalker(visitor);
    root.setExpectations();

    walker.start(root.getMock());
  }
  @Test
  public void walkSingleFile() throws IOException {
    walker = new DefaultDirectoryWalker(visitor);

    final MockFile root = new MockFile(context, "root", false);
    final MockFile fileToCopy = root.addFile("file.txt");

    fileToCopy.setExpectations();

    context.checking(
        new Expectations() {
          {
            one(visitor).visitFile(with(file(fileToCopy)));
          }
        });

    walker.start(fileToCopy.getMock());
  }