Skip to content

Commit

Permalink
Added random test cases to compatibility/src/sway.rs
Browse files Browse the repository at this point in the history
  • Loading branch information
VictorKoenders committed Feb 1, 2022
1 parent 82ab6e3 commit 3a9de8f
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 14 deletions.
6 changes: 4 additions & 2 deletions compatibility/src/rand.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@

use rand::Rng;

#[derive(Debug, bincode_2::Encode, bincode_2::Decode, serde::Serialize, serde::Deserialize)]
#[derive(
Debug, bincode_2::Encode, bincode_2::Decode, serde::Serialize, serde::Deserialize, PartialEq,
)]
#[bincode(crate = "bincode_2")]
pub struct Lcg64Xsh32 {
state: u64,
Expand All @@ -13,7 +15,7 @@ pub struct Lcg64Xsh32 {
#[test]
pub fn test() {
let mut rng = rand::thread_rng();
for _ in 0..100 {
for _ in 0..1000 {
crate::test_same(Lcg64Xsh32 {
state: rng.gen(),
increment: rng.gen(),
Expand Down
65 changes: 53 additions & 12 deletions compatibility/src/sway.rs
Original file line number Diff line number Diff line change
@@ -1,37 +1,61 @@
// Credits to Sway in the Rust Programming Language

use rand::Rng;
use serde::{Deserialize, Serialize};

#[derive(bincode_2::Encode, bincode_2::Decode, serde::Serialize, serde::Deserialize, Debug)]
#[test]
pub fn test() {
let mut rng = rand::thread_rng();
for _ in 0..1000 {
crate::test_same(random(&mut rng));
}
}

fn random(rng: &mut impl Rng) -> FTXresponse<Trade> {
if rng.gen() {
FTXresponse::Result(FTXresponseSuccess {
result: Trade::random(rng),
success: rng.gen(),
})
} else {
FTXresponse::Error(FTXresponseFailure {
success: rng.gen(),
error: crate::gen_string(rng),
})
}
}

#[derive(bincode_2::Encode, bincode_2::Decode, Serialize, Deserialize, Debug, PartialEq)]
#[bincode(crate = "bincode_2")]
pub enum FTXresponse<T> {
Result(FTXresponseSuccess<T>),
Error(FTXresponseFailure),
}

#[derive(
bincode_2::Encode, bincode_2::Decode, serde::Serialize, serde::Deserialize, Debug, PartialEq,
)]
#[bincode(crate = "bincode_2")]
pub struct FTXresponseSuccess<T> {
pub success: bool,
pub result: T,
}

#[derive(bincode_2::Encode, bincode_2::Decode, Serialize, Deserialize, Debug)]
#[derive(bincode_2::Encode, bincode_2::Decode, Serialize, Deserialize, Debug, PartialEq)]
#[bincode(crate = "bincode_2")]
pub struct FTXresponseFailure {
pub success: bool,
pub error: String,
}

#[derive(bincode_2::Encode, bincode_2::Decode, Serialize, Deserialize, Debug)]
#[bincode(crate = "bincode_2")]
#[serde(untagged)]
pub enum FTXresponse<T> {
Result(FTXresponseSuccess<T>),
Error(FTXresponseFailure),
}

#[derive(bincode_2::Encode, bincode_2::Decode, Serialize, Deserialize, Debug)]
#[derive(bincode_2::Encode, bincode_2::Decode, Serialize, Deserialize, Debug, PartialEq)]
#[bincode(crate = "bincode_2")]
pub enum TradeSide {
Buy,
Sell,
}

#[derive(bincode_2::Encode, bincode_2::Decode, Serialize, Deserialize, Debug)]
#[derive(bincode_2::Encode, bincode_2::Decode, Serialize, Deserialize, Debug, PartialEq)]
#[bincode(crate = "bincode_2")]
#[serde(rename_all = "camelCase")]
pub struct Trade {
Expand All @@ -42,3 +66,20 @@ pub struct Trade {
pub size: f64,
pub time: String,
}

impl Trade {
fn random(rng: &mut impl Rng) -> Self {
Self {
id: rng.gen(),
liquidation: rng.gen(),
price: rng.gen(),
side: if rng.gen() {
TradeSide::Buy
} else {
TradeSide::Sell
},
size: rng.gen(),
time: crate::gen_string(rng),
}
}
}

0 comments on commit 3a9de8f

Please sign in to comment.