Skip to content

Commit faed887

Browse files
authored
test: Rewrote and refactored tests to base them on official test vectors (#24)
1 parent 0489050 commit faed887

File tree

8 files changed

+108
-252
lines changed

8 files changed

+108
-252
lines changed

docs/vectors.json

-89
This file was deleted.

nomen_core/src/create.rs

+19
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,22 @@ impl<'a> CreateBuilder<'a> {
3030
.serialize()
3131
}
3232
}
33+
34+
#[cfg(test)]
35+
mod tests {
36+
use super::*;
37+
#[test]
38+
fn test_op_returns() {
39+
let pk = "60de6fbc4a78209942c62706d904ff9592c2e856f219793f7f73e62fc33bfc18"
40+
.parse()
41+
.unwrap();
42+
let cb = CreateBuilder::new(&pk, "hello-world");
43+
44+
assert_eq!(
45+
hex::encode(cb.v0_op_return()),
46+
"4e4f4d0000e5401df4b4273968a1e7be2ef0acbcae6f61d53e73101e2983"
47+
);
48+
49+
assert_eq!(hex::encode(cb.v1_op_return()), "4e4f4d010060de6fbc4a78209942c62706d904ff9592c2e856f219793f7f73e62fc33bfc1868656c6c6f2d776f726c64");
50+
}
51+
}

nomen_core/src/kind.rs

+49-27
Original file line numberDiff line numberDiff line change
@@ -255,36 +255,58 @@ mod tests {
255255
use super::*;
256256

257257
#[test]
258-
fn test_parse_create_v0() {
259-
let fp = hex::decode("0102030405").unwrap();
260-
let nsid = Nsid::from_str("c215a040e1c3566deb8ef3d37e2a4915cd9ba672").unwrap();
261-
let create = b"NOM\x00\x00"
262-
.iter()
263-
.chain(fp.iter())
264-
.chain(nsid.to_vec().iter())
265-
.copied()
266-
.collect_vec();
267-
assert_eq!(
268-
CreateV0::try_from(create.as_ref()).unwrap(),
269-
CreateV0::create(fp.try_into().unwrap(), nsid)
270-
);
258+
fn test_parse_create_serialize_v0() {
259+
let or =
260+
hex::decode("4e4f4d0000e5401df4b4273968a1e7be2ef0acbcae6f61d53e73101e2983").unwrap();
261+
let c = CreateV0::try_from(or.as_ref());
262+
assert!(c.is_ok());
263+
assert_eq!(c.unwrap().serialize(), or);
271264
}
272265

273266
#[test]
274-
fn test_parse_create_v1() {
275-
let pk = hex::decode("285d4ca25cbe209832aa15a4b94353b877a2fe6c3b94dee1a4c8bc36770304db")
276-
.unwrap();
277-
let pk = XOnlyPublicKey::from_slice(&pk).unwrap();
278-
let create = b"NOM\x01\x00"
279-
.iter()
280-
.chain(pk.serialize().iter())
281-
.chain(b"hello-world".iter())
282-
.copied()
283-
.collect_vec();
284-
assert_eq!(
285-
CreateV1::try_from(create.as_slice()).unwrap(),
286-
CreateV1::create(pk, "hello-world")
287-
);
267+
fn test_invalid_create_v0() {
268+
let or =
269+
hex::decode("4e4f4d0001e5401df4b4273968a1e7be2ef0acbcae6f61d53e73101e2983").unwrap();
270+
let c = CreateV0::try_from(or.as_ref());
271+
assert!(c.is_err());
272+
}
273+
274+
#[test]
275+
fn test_parse_create_serialize_v1() {
276+
let pk = XOnlyPublicKey::from_str(
277+
"60de6fbc4a78209942c62706d904ff9592c2e856f219793f7f73e62fc33bfc18",
278+
)
279+
.unwrap();
280+
let or = hex::decode("4e4f4d010060de6fbc4a78209942c62706d904ff9592c2e856f219793f7f73e62fc33bfc1868656c6c6f2d776f726c64").unwrap();
281+
let c = CreateV1::try_from(or.as_ref());
282+
assert!(c.is_ok());
283+
assert_eq!(c.unwrap().serialize(), or);
284+
}
285+
286+
#[test]
287+
fn test_invalid_create_v1() {
288+
let or = hex::decode(
289+
"4e4f4d010060de6fbc4a78209942c62706d904ff9592c2e856f219793f7f73e62fc33bfc186c64",
290+
)
291+
.unwrap();
292+
let c = CreateV1::try_from(or.as_ref());
293+
assert!(c.is_err());
294+
}
295+
296+
#[test]
297+
fn test_parse_transfer_serialize_v1() {
298+
let or = hex::decode("4e4f4d010174301b9c5d30b764bca8d3eb4febb06862f558d292fde93b4a290d90850bac9168656c6c6f2d776f726c64").unwrap();
299+
let t = TransferV1::try_from(or.as_ref());
300+
assert!(t.is_ok());
301+
assert_eq!(t.unwrap().serialize(), or);
302+
}
303+
304+
#[test]
305+
fn test_parse_signatuyre_serialize_v1() {
306+
let or = hex::decode("4e4f4d0102489e4e3ab29408da53733473156040a25e5a84cbca788c2b7143f971ead84192ae8bd8e4890cfabb08dca693875c28a1949ae0d13f5c6b08617e4fdc022bc751").unwrap();
307+
let t = SignatureV1::try_from(or.as_ref());
308+
assert!(t.is_ok());
309+
assert_eq!(t.unwrap().serialize(), or);
288310
}
289311

290312
#[test]

nomen_core/src/name.rs

+14-4
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,23 @@ mod tests {
2929

3030
#[test]
3131
fn test_valid() {
32-
let s: Result<Name, UtilError> = "smith".parse();
33-
assert_eq!(s.unwrap(), Name("smith".to_string()))
32+
let r = ["hello-world", "123abc"]
33+
.into_iter()
34+
.map(Name::from_str)
35+
.all(|r| r.is_ok());
36+
assert!(r);
3437
}
3538

3639
#[test]
3740
fn test_invalid() {
38-
let s: Result<Name, UtilError> = "Smith".parse();
39-
assert!(s.is_err())
41+
let r = [
42+
"hello!",
43+
"ld",
44+
"abcdefghijklmnopqrztuvwxyzabcdefghijklmnopqrztuvwxyz",
45+
]
46+
.into_iter()
47+
.map(Name::from_str)
48+
.all(|r| r.is_err());
49+
assert!(r);
4050
}
4151
}

nomen_core/src/nsid_builder.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,14 @@ mod tests {
3131

3232
#[test]
3333
fn test_nsid_builder() {
34-
let pk: XOnlyPublicKey = "d57b873363d2233d3cd54453416deff9546df50d963bb1208da37f10a4c23d6f"
34+
let pk: XOnlyPublicKey = "60de6fbc4a78209942c62706d904ff9592c2e856f219793f7f73e62fc33bfc18"
3535
.parse()
3636
.unwrap();
37-
let nsid = NsidBuilder::new("smith", &pk).finalize();
37+
let nsid = NsidBuilder::new("hello-world", &pk).finalize();
3838

3939
assert_eq!(
4040
nsid,
41-
"28d63a9a61c6c5ce6be37a830105c92cf7a8f365".parse().unwrap()
41+
"273968a1e7be2ef0acbcae6f61d53e73101e2983".parse().unwrap()
4242
)
4343
}
4444
}

nomen_core/src/transfer.rs

+23
Original file line numberDiff line numberDiff line change
@@ -47,3 +47,26 @@ impl<'a> TransferBuilder<'a> {
4747
SignatureV1 { signature }.serialize()
4848
}
4949
}
50+
51+
#[cfg(test)]
52+
mod tests {
53+
use std::str::FromStr;
54+
55+
use super::*;
56+
57+
#[test]
58+
fn test_op_returns() {
59+
let new_pubkey = XOnlyPublicKey::from_str(
60+
"74301b9c5d30b764bca8d3eb4febb06862f558d292fde93b4a290d90850bac91",
61+
)
62+
.unwrap();
63+
let tb = TransferBuilder {
64+
new_pubkey: &new_pubkey,
65+
name: "hello-world",
66+
};
67+
68+
assert_eq!(hex::encode(tb.transfer_op_return()), "4e4f4d010174301b9c5d30b764bca8d3eb4febb06862f558d292fde93b4a290d90850bac9168656c6c6f2d776f726c64");
69+
70+
// Signatures are not consistent, so they can't really be tested here.
71+
}
72+
}

nomen_core/tests/common.rs

-55
This file was deleted.

0 commit comments

Comments
 (0)