Example #1
0
        public void opcodes_survive_a_round_trip()
        {
            double enc1 = NanTags.EncodeOpcode('c', 'j', 123, 0); // control, jump, 123, <unused>
            double enc2 = NanTags.EncodeOpcode('f', 'd', 3, 40);  // function, define, 3 params, 40 opcodes

            Assert.That(NanTags.TypeOf(enc1), Is.EqualTo(DataType.Opcode));
            Assert.That(NanTags.TypeOf(enc2), Is.EqualTo(DataType.Opcode));

            NanTags.DecodeOpCode(enc1, out var codeClass, out var codeAction, out var p1, out var p2);
            Assert.That(codeClass, Is.EqualTo('c'));
            Assert.That(codeAction, Is.EqualTo('j'));
            Assert.That(p1, Is.EqualTo(123));
            Assert.That(p2, Is.EqualTo(0));

            NanTags.DecodeOpCode(enc2, out codeClass, out codeAction, out p1, out p2);
            Assert.That(codeClass, Is.EqualTo('f'));
            Assert.That(codeAction, Is.EqualTo('d'));
            Assert.That(p1, Is.EqualTo(3));
            Assert.That(p2, Is.EqualTo(40));
        }