Example #1
0
#include <string>
#include <cstdint>
#include <functional>

#include "catch.hpp"
#include "bf.h"

TEST_CASE("Edge cases", "[bf][edge-case]") {
  BF bf;
  bytestream is, os;

  SECTION("pointer underflow") {
    std::string src("<");

    REQUIRE(bf.interpret(src, is, os));
    REQUIRE(bf.ptr() == BF::MEM_SIZE - 1);
  }

  SECTION("pointer overflow") {
    std::string src(BF::MEM_SIZE, '>');

    REQUIRE(bf.interpret(src, is, os));
    REQUIRE(bf.ptr() == 0);
  }

  SECTION("memory byte underflow") {
    std::string src("-.");

    REQUIRE(bf.interpret(src, is, os));

    uint8_t v;