Skip to content

Instantly share code, notes, and snippets.

@benfalk
Created December 6, 2017 23:35
Show Gist options
  • Save benfalk/0b786a8146814eff8385339263dac80d to your computer and use it in GitHub Desktop.
Save benfalk/0b786a8146814eff8385339263dac80d to your computer and use it in GitHub Desktop.
defmodule PacketxTest do
use ExUnit.Case, async: true
doctest Packetx
defmodule Person do
use Packetx do
version "1.1.24-c"
field :age, :integer, size: [bits: 7]
field :gender, :integer, size: [bits: 1]
field :first_name, :pascal_string
field :last_name, :pascal_string
end
end
test "it has a version" do
assert %Version{major: 1, minor: 1, patch: 24, pre: ["c"]} == Person.version
end
test "it is a struct" do
keys = %Person{} |> Map.keys
assert :age in keys
assert :gender in keys
assert :first_name in keys
assert :last_name in keys
end
test "it can create a binary" do
person = %Person{age: 35, gender: 0, first_name: "ben", last_name: "falk"}
assert Person.to_binary(person) == <<35::7, 0::1, 3, "ben", 4, "falk">>
end
test "it can populate a struct from binary" do
assert Person.from_binary(<<35::7, 0::1, 3, "ben", 4, "falk">>) ==
%Person{age: 35, gender: 0, first_name: "ben", last_name: "falk"}
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment