defmodule LEB128Test do use ExUnit.Case test "Encode unsigned" do assert WaParser.LEB128.encode_unsigned(0) == <<0x00>> assert WaParser.LEB128.encode_unsigned(42) == <<0x2A>> assert WaParser.LEB128.encode_unsigned(624_485) == <<0xE5, 0x8E, 0x26>> end test "Decode unsigned" do assert WaParser.LEB128.decode_unsigned(<<0x00>>) == 0 assert WaParser.LEB128.decode_unsigned(<<0x2A>>) == 42 assert WaParser.LEB128.decode_unsigned(<<0xE5, 0x8E, 0x26>>) == 624_485 end test "Encode signed" do assert WaParser.LEB128.encode_signed(0) == <<0x00>> assert WaParser.LEB128.encode_signed(123_456) == <<0xC0, 0xC4, 0x07>> assert WaParser.LEB128.encode_signed(-123_456) == <<0xC0, 0xBB, 0x78>> end test "Decode signed" do assert WaParser.LEB128.decode_signed(<<0x00>>) == 0 assert WaParser.LEB128.decode_signed(<<0xC0, 0xC4, 0x07>>) == 123_456 assert WaParser.LEB128.decode_signed(<<0xC0, 0xBB, 0x78>>) == -123_456 end end