mirror of
https://github.com/davidgiven/fluxengine.git
synced 2025-10-31 11:17:01 -07:00
166 lines
6.0 KiB
C++
166 lines
6.0 KiB
C++
#include "lib/globals.h"
|
|
#include "lib/decoders/decoders.h"
|
|
#include <assert.h>
|
|
|
|
static void testDecode(void)
|
|
{
|
|
assert(decodeFmMfm(std::vector<bool>{true,
|
|
false,
|
|
true,
|
|
false,
|
|
true,
|
|
false,
|
|
true,
|
|
false,
|
|
true,
|
|
false,
|
|
true,
|
|
false,
|
|
true,
|
|
false,
|
|
true,
|
|
false}) == Bytes{0x00});
|
|
|
|
assert(decodeFmMfm(std::vector<bool>{true,
|
|
true,
|
|
true,
|
|
false,
|
|
true,
|
|
false,
|
|
true,
|
|
false,
|
|
true,
|
|
false,
|
|
true,
|
|
false,
|
|
true,
|
|
false,
|
|
true,
|
|
true}) == Bytes{0x81});
|
|
|
|
assert(decodeFmMfm(std::vector<bool>{
|
|
true,
|
|
true,
|
|
true,
|
|
false,
|
|
}) == Bytes{0x80});
|
|
}
|
|
|
|
static std::vector<bool> wrappedEncodeMfm(const Bytes& bytes)
|
|
{
|
|
std::vector<bool> bits(16);
|
|
unsigned cursor = 0;
|
|
bool lastBit = false;
|
|
encodeMfm(bits, cursor, bytes, lastBit);
|
|
return bits;
|
|
}
|
|
|
|
static std::vector<bool> wrappedEncodeFm(const Bytes& bytes)
|
|
{
|
|
std::vector<bool> bits(16);
|
|
unsigned cursor = 0;
|
|
encodeFm(bits, cursor, bytes);
|
|
return bits;
|
|
}
|
|
|
|
static void testEncodeMfm(void)
|
|
{
|
|
assert(wrappedEncodeMfm(Bytes{0xa1}) == (std::vector<bool>{false,
|
|
true,
|
|
false,
|
|
false,
|
|
false,
|
|
true,
|
|
false,
|
|
false,
|
|
true,
|
|
false,
|
|
true,
|
|
false,
|
|
true,
|
|
false,
|
|
false,
|
|
true}));
|
|
|
|
assert(wrappedEncodeMfm(Bytes{0xc2}) == (std::vector<bool>{false,
|
|
true,
|
|
false,
|
|
true,
|
|
false,
|
|
false,
|
|
true,
|
|
false,
|
|
true,
|
|
false,
|
|
true,
|
|
false,
|
|
false,
|
|
true,
|
|
false,
|
|
false}));
|
|
|
|
assert(wrappedEncodeMfm(Bytes{0xb0}) == (std::vector<bool>{
|
|
false,
|
|
true,
|
|
false,
|
|
false,
|
|
false,
|
|
true,
|
|
false,
|
|
true,
|
|
false,
|
|
false,
|
|
true,
|
|
false,
|
|
true,
|
|
false,
|
|
true,
|
|
false,
|
|
}));
|
|
}
|
|
|
|
static void testEncodeFm(void)
|
|
{
|
|
assert(wrappedEncodeFm(Bytes{0x00}) == (std::vector<bool>{true,
|
|
false,
|
|
true,
|
|
false,
|
|
true,
|
|
false,
|
|
true,
|
|
false,
|
|
true,
|
|
false,
|
|
true,
|
|
false,
|
|
true,
|
|
false,
|
|
true,
|
|
false}));
|
|
|
|
assert(wrappedEncodeFm(Bytes{0x81}) == (std::vector<bool>{true,
|
|
true,
|
|
true,
|
|
false,
|
|
true,
|
|
false,
|
|
true,
|
|
false,
|
|
true,
|
|
false,
|
|
true,
|
|
false,
|
|
true,
|
|
false,
|
|
true,
|
|
true}));
|
|
}
|
|
|
|
int main(int argc, const char* argv[])
|
|
{
|
|
testDecode();
|
|
testEncodeMfm();
|
|
testEncodeFm();
|
|
return 0;
|
|
}
|