/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/**
 * Copyright (C) 2014 Named Data Networking Project
 * See COPYING for copyright and distribution information.
 */

#ifndef NFD_TEST_FACE_DUMMY_FACE_HPP
#define NFD_TEST_FACE_DUMMY_FACE_HPP

#include "face/face.hpp"
#include "face/local-face.hpp"

namespace nfd {

/** \class DummyFace
 *  \brief provides a Face that cannot communicate
 *  for unit testing only
 */
template<class FaceBase>
class DummyFaceImpl : public FaceBase
{
public:
  virtual void
  sendInterest(const Interest& interest)
  {
  }
  
  virtual void
  sendData(const Data& data)
  {
  }

  virtual void
  close()
  {
  }

private:
};

typedef DummyFaceImpl<Face> DummyFace;
typedef DummyFaceImpl<LocalFace> DummyLocalFace;

} // namespace nfd

#endif // TEST_FACE_DUMMY_FACE_HPP
