Skip to content

Commit 0ee844d

Browse files
authored
Replace eqc with stream_data (#149)
1 parent 8dc9840 commit 0ee844d

File tree

6 files changed

+44
-50
lines changed

6 files changed

+44
-50
lines changed

.formatter.exs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@
44
locals_without_parens: [field: 2, field: 3, oneof: 2, extend: 4, extensions: 1],
55
export: [
66
locals_without_parens: [field: 2, field: 3, oneof: 2, extend: 4, extensions: 1]
7-
]
7+
],
8+
import_deps: [:stream_data]
89
]

README.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -149,10 +149,8 @@ More options will be added in the future, see elixirpb.proto comments for detail
149149

150150
## Tests
151151

152-
Before you can run the test suite, you must install `eqc_gen`:
153-
154-
```
155-
$ mix eqc.install --mini
152+
```bash
153+
mix test
156154
```
157155

158156
## Sponsors

mix.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ defmodule Protobuf.Mixfile do
3535
{:dialyxir, "~> 1.0", only: [:dev, :test], runtime: false},
3636
{:credo, "~> 1.5", only: [:dev, :test], runtime: false},
3737
{:ex_doc, "~> 0.23", only: :dev, runtime: false},
38-
{:eqc_ex, github: "tony612/eqc_ex", branch: "fix-elixir-1-10", only: [:dev, :test]}
38+
{:stream_data, "~> 0.5.0", only: [:dev, :test]}
3939
]
4040
end
4141

mix.lock

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,13 @@
22
"bunt": {:hex, :bunt, "0.2.0", "951c6e801e8b1d2cbe58ebbd3e616a869061ddadcc4863d0a2182541acae9a38", [:mix], [], "hexpm", "7af5c7e09fe1d40f76c8e4f9dd2be7cebd83909f31fee7cd0e9eadc567da8353"},
33
"credo": {:hex, :credo, "1.5.1", "4fe303cc828412b9d21eed4eab60914c401e71f117f40243266aafb66f30d036", [:mix], [{:bunt, "~> 0.2.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2.8", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "0b219ca4dcc89e4e7bc6ae7e6539c313e738e192e10b85275fa1e82b5203ecd7"},
44
"dialyxir": {:hex, :dialyxir, "1.0.0", "6a1fa629f7881a9f5aaf3a78f094b2a51a0357c843871b8bc98824e7342d00a5", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "aeb06588145fac14ca08d8061a142d52753dbc2cf7f0d00fc1013f53f8654654"},
5-
"earmark": {:hex, :earmark, "1.4.5", "62ffd3bd7722fb7a7b1ecd2419ea0b458c356e7168c1f5d65caf09b4fbdd13c8", [:mix], [], "hexpm", "b7d0e6263d83dc27141a523467799a685965bf8b13b6743413f19a7079843f4f"},
65
"earmark_parser": {:hex, :earmark_parser, "1.4.10", "6603d7a603b9c18d3d20db69921527f82ef09990885ed7525003c7fe7dc86c56", [:mix], [], "hexpm", "8e2d5370b732385db2c9b22215c3f59c84ac7dda7ed7e544d7c459496ae519c0"},
7-
"eqc_ex": {:git, "https://github.com/tony612/eqc_ex.git", "43759ba1fa56dec40b0346f2e23268d18f3ccda1", [branch: "fix-elixir-1-10"]},
86
"erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"},
97
"ex_doc": {:hex, :ex_doc, "0.23.0", "a069bc9b0bf8efe323ecde8c0d62afc13d308b1fa3d228b65bca5cf8703a529d", [:mix], [{:earmark_parser, "~> 1.4.0", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}], "hexpm", "f5e2c4702468b2fd11b10d39416ddadd2fcdd173ba2a0285ebd92c39827a5a16"},
108
"file_system": {:hex, :file_system, "0.2.9", "545b9c9d502e8bfa71a5315fac2a923bd060fd9acb797fe6595f54b0f975fd32", [:mix], [], "hexpm", "3cf87a377fe1d93043adeec4889feacf594957226b4f19d5897096d6f61345d8"},
119
"jason": {:hex, :jason, "1.2.2", "ba43e3f2709fd1aa1dce90aaabfd039d000469c05c56f0b8e31978e03fa39052", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "18a228f5f0058ee183f29f9eae0805c6e59d61c3b006760668d8d18ff0d12179"},
1210
"makeup": {:hex, :makeup, "1.0.5", "d5a830bc42c9800ce07dd97fa94669dfb93d3bf5fcf6ea7a0c67b2e0e4a7f26c", [:mix], [{:nimble_parsec, "~> 0.5 or ~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "cfa158c02d3f5c0c665d0af11512fed3fba0144cf1aadee0f2ce17747fba2ca9"},
1311
"makeup_elixir": {:hex, :makeup_elixir, "0.15.0", "98312c9f0d3730fde4049985a1105da5155bfe5c11e47bdc7406d88e01e4219b", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.1", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "75ffa34ab1056b7e24844c90bfc62aaf6f3a37a15faa76b07bc5eba27e4a8b4a"},
1412
"nimble_parsec": {:hex, :nimble_parsec, "1.1.0", "3a6fca1550363552e54c216debb6a9e95bd8d32348938e13de5eda962c0d7f89", [:mix], [], "hexpm", "08eb32d66b706e913ff748f11694b17981c0b04a33ef470e33e11b3d3ac8f54b"},
13+
"stream_data": {:hex, :stream_data, "0.5.0", "b27641e58941685c75b353577dc602c9d2c12292dd84babf506c2033cd97893e", [:mix], [], "hexpm", "012bd2eec069ada4db3411f9115ccafa38540a3c78c4c0349f151fc761b9e271"},
1514
}

test/pbt/encode_decode_type_test.exs

Lines changed: 26 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,10 @@ defmodule Protobuf.EncodeDecodeTypeTest.PropertyGenerator do
1212
defmacro make_property(gen_func, field_type, wire_type) do
1313
quote do
1414
property unquote(Atom.to_string(field_type)) <> " roundtrip" do
15-
forall n <- unquote(gen_func) do
15+
check all n <- unquote(gen_func) do
1616
iodata = Encoder.encode_type(unquote(field_type), n)
1717
bin = IO.iodata_to_binary(iodata)
18-
19-
ensure(
20-
n ==
21-
decode_type(
22-
unquote(wire_type),
23-
unquote(field_type),
24-
bin
25-
)
26-
)
18+
assert n == decode_type(unquote(wire_type), unquote(field_type), bin)
2719
end
2820
end
2921
end
@@ -35,7 +27,7 @@ defmodule Protobuf.EncodeDecodeTypeTest.PropertyGenerator do
3527
defmacro make_canonical_property(gen_func, field_type, wire_type) do
3628
quote do
3729
property unquote(Atom.to_string(field_type)) <> " canonical roundtrip" do
38-
forall n <- unquote(gen_func) do
30+
check all n <- unquote(gen_func) do
3931
encoded_val =
4032
unquote(field_type)
4133
|> Encoder.encode_type(n)
@@ -53,45 +45,47 @@ defmodule Protobuf.EncodeDecodeTypeTest.PropertyGenerator do
5345
|> Encoder.encode_type(canonical_val)
5446
|> IO.iodata_to_binary()
5547

56-
ensure(
57-
canonical_val ==
58-
decode_type(
59-
unquote(wire_type),
60-
unquote(field_type),
61-
bin
62-
)
63-
)
48+
assert canonical_val == decode_type(unquote(wire_type), unquote(field_type), bin)
6449
end
6550
end
6651
end
6752
end
6853
end
6954

7055
defmodule Protobuf.EncodeDecodeTypeTest do
71-
use ExUnit.Case
72-
use EQC.ExUnit
56+
use ExUnit.Case, async: true
57+
use ExUnitProperties
7358

7459
import Protobuf.EncodeDecodeTypeTest.PropertyGenerator
7560

7661
defp uint32_gen do
77-
let(<<x::unsigned-integer-size(32)>> <- binary(4), do: return(x))
62+
map(binary(length: 4), fn <<x::unsigned-integer-size(32)>> -> x end)
7863
end
7964

8065
defp uint64_gen do
81-
let(<<x::unsigned-integer-size(64)>> <- binary(8), do: return(x))
66+
map(binary(length: 8), fn <<x::unsigned-integer-size(64)>> -> x end)
67+
end
68+
69+
defp large_integer do
70+
scale(integer(), &(&1 * 10_000))
8271
end
8372

84-
make_property(int(), :int32, 0)
85-
make_property(largeint(), :int64, 0)
73+
defp natural_number do
74+
map(integer(), &abs/1)
75+
end
76+
77+
make_property(integer(), :int32, 0)
78+
make_property(large_integer(), :int64, 0)
8679
make_property(uint32_gen(), :uint32, 0)
8780
make_property(uint64_gen(), :uint64, 0)
88-
make_property(int(), :sint32, 0)
89-
make_property(largeint(), :sint64, 0)
90-
make_property(bool(), :bool, 0)
81+
make_property(integer(), :sint32, 0)
82+
make_property(large_integer(), :sint64, 0)
83+
84+
make_property(boolean(), :bool, 0)
9185

92-
make_property(nat(), :fixed64, 1)
93-
make_property(largeint(), :sfixed64, 1)
94-
make_canonical_property(resize(64, real()), :double, 1)
86+
make_property(natural_number(), :fixed64, 1)
87+
make_property(large_integer(), :sfixed64, 1)
9588

96-
make_canonical_property(resize(32, real()), :float, 5)
89+
make_canonical_property(float(), :double, 1)
90+
make_canonical_property(float(), :float, 5)
9791
end
Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,27 @@
11
defmodule Protobuf.EncodeDecodeVarintTest do
2-
use ExUnit.Case
3-
use EQC.ExUnit
2+
use ExUnit.Case, async: true
3+
use ExUnitProperties
44

55
alias Protobuf.{Encoder, Decoder}
66

77
property "varint roundtrip" do
8-
forall n <- largeint() do
8+
check all n <- large_integer_gen() do
99
iodata = Encoder.encode_varint(n)
1010
bin = IO.iodata_to_binary(iodata)
1111
[n] = Decoder.decode_varint(bin, :value)
12-
ensure(<<n::signed-64>> == <<n::64>>)
12+
assert <<n::signed-64>> == <<n::64>>
1313
end
1414
end
1515

16-
defp neg_gen do
17-
let(x <- largeint(), do: return(-abs(x)))
18-
end
19-
2016
property "encode_varint for negative integers should always be 10 bytes" do
21-
forall n <- neg_gen() do
22-
ensure(IO.iodata_length(Encoder.encode_varint(n)) == 10)
17+
negative_large_integer_gen = map(large_integer_gen(), &(-abs(&1)))
18+
19+
check all n <- negative_large_integer_gen do
20+
assert IO.iodata_length(Encoder.encode_varint(n)) == 10
2321
end
2422
end
23+
24+
defp large_integer_gen do
25+
scale(integer(), &(&1 * 10_000))
26+
end
2527
end

0 commit comments

Comments
 (0)