Make initializer methods pure
[hiphop-php.git] / hphp / runtime / test / hhbc-codec.cpp
blobaa576b6d4c8d5861cce8bcb03de394ce0dac223e
1 /*
2 +----------------------------------------------------------------------+
3 | HipHop for PHP |
4 +----------------------------------------------------------------------+
5 | Copyright (c) 2010-present Facebook, Inc. (http://www.facebook.com) |
6 +----------------------------------------------------------------------+
7 | This source file is subject to version 3.01 of the PHP license, |
8 | that is bundled with this package in the file LICENSE, and is |
9 | available through the world-wide-web at the following url: |
10 | http://www.php.net/license/3_01.txt |
11 | If you did not receive a copy of the PHP license and are unable to |
12 | obtain it through the world-wide-web, please send a note to |
13 | license@php.net so we can mail you a copy immediately. |
14 +----------------------------------------------------------------------+
16 #include <gtest/gtest.h>
18 #include "hphp/runtime/vm/hhbc-codec.h"
20 namespace HPHP {
22 TEST(HHBCCodec, Basic) {
23 std::vector<uint8_t> bc;
25 for (size_t i = 0; i <= 0x1fd; ++i) {
26 auto const op = static_cast<Op>(i);
27 auto const before_sz = bc.size();
28 encode_op(op, [&](uint8_t byte) { bc.emplace_back(byte); });
29 auto const size = bc.size() - before_sz;
31 // Verify that the encoded size is as expected.
32 if (i < 0xff) {
33 EXPECT_TRUE(size == 1);
34 } else {
35 EXPECT_TRUE(size == 2);
39 const uint8_t* it = bc.data();
40 auto const end = bc.data() + bc.size();
41 for (size_t i = 0; i <= 0x1fd; ++i) {
42 auto const op = decode_op_unchecked(it);
43 if (i == 0x1fd) {
44 EXPECT_EQ(it, end);
45 } else {
46 EXPECT_LT(it, end);
48 EXPECT_EQ(op, static_cast<Op>(i));