mirror of https://github.com/dnomd343/klotski.git
Dnomd343
2 years ago
3 changed files with 279 additions and 309 deletions
@ -1,305 +0,0 @@ |
|||
#[cfg(test)] |
|||
mod ffi { |
|||
// #[allow(unused_imports)]
|
|||
use crate::codec::ffi as codec_ffi; |
|||
|
|||
#[test] |
|||
fn warm_up() { |
|||
assert_eq!(codec_ffi::is_short_code_available(), false); |
|||
codec_ffi::short_code_enable(); |
|||
assert_eq!(codec_ffi::is_short_code_available(), true); |
|||
|
|||
assert_eq!(codec_ffi::is_short_code_available_fast(), false); |
|||
codec_ffi::short_code_enable_fast(); |
|||
assert_eq!(codec_ffi::is_short_code_available_fast(), true); |
|||
} |
|||
|
|||
const TEST_SHORT_CODE_OK: u32 = 4091296; |
|||
const TEST_SHORT_CODE_STR_OK: &str = "4WVE1"; |
|||
const TEST_COMMON_CODE_OK: u64 = 0x1_A9BF_0C00; |
|||
const TEST_COMMON_CODE_STR_OK: &str = "1A9BF0C00"; |
|||
const TEST_COMMON_CODE_STR_SHR_OK: &str = "1A9BF0C"; |
|||
const TEST_RAW_CODE_OK: u64 = 0x0603_EDF5_CAFF_F5E2; |
|||
|
|||
const TEST_SHORT_CODE_ERR: u32 = 29670987; |
|||
const TEST_COMMON_CODE_ERR: u64 = 0x1_2190_2300; |
|||
const TEST_RAW_CODE_ERR: u64 = 0x0A34_182B_3810_2D21; |
|||
|
|||
const TEST_SHORT_CODE_STR_ERR: &str = "R50EH"; |
|||
const TEST_COMMON_CODE_STR_ERR: &str = "123J432A9"; |
|||
|
|||
const TEST_MIRROR_V: u64 = 0x0_FC0_480_6DB_FC0_480; |
|||
const TEST_MIRROR_V1: u64 = 0x0_E58_FC8_5FF_EBC_4DB; |
|||
const TEST_MIRROR_V2: u64 = 0x0_EDB_5FF_EBC_5C8_E58; |
|||
|
|||
const TEST_MIRROR_H: u64 = 0x0_603_EDF_5CA_FFF_5E2; |
|||
const TEST_MIRROR_H1: u64 = 0x0_E58_FC8_5FF_EBC_4DB; |
|||
const TEST_MIRROR_H2: u64 = 0x0_0F9_1CF_FFA_F17_6DA; |
|||
|
|||
#[test] |
|||
fn checker() { |
|||
assert_eq!(codec_ffi::raw_code_check(TEST_RAW_CODE_OK), true); |
|||
assert_eq!(codec_ffi::raw_code_check(TEST_RAW_CODE_ERR), false); |
|||
|
|||
assert_eq!(codec_ffi::short_code_check(TEST_SHORT_CODE_OK), true); |
|||
assert_eq!(codec_ffi::short_code_check(TEST_SHORT_CODE_ERR), false); |
|||
|
|||
assert_eq!(codec_ffi::common_code_check(TEST_COMMON_CODE_OK), true); |
|||
assert_eq!(codec_ffi::common_code_check(TEST_COMMON_CODE_ERR), false); |
|||
} |
|||
|
|||
#[test] |
|||
fn convert() { |
|||
// raw code -> short code
|
|||
assert!(codec_ffi::raw_code_to_short_code(TEST_RAW_CODE_ERR).is_err()); |
|||
assert!(codec_ffi::raw_code_to_short_code(TEST_RAW_CODE_OK).is_ok()); |
|||
assert_eq!( |
|||
codec_ffi::raw_code_to_short_code(TEST_RAW_CODE_OK).unwrap(), |
|||
TEST_SHORT_CODE_OK |
|||
); |
|||
|
|||
// short code -> raw code
|
|||
assert!(codec_ffi::short_code_to_raw_code(TEST_SHORT_CODE_ERR).is_err()); |
|||
assert!(codec_ffi::short_code_to_raw_code(TEST_SHORT_CODE_OK).is_ok()); |
|||
assert_eq!( |
|||
codec_ffi::short_code_to_raw_code(TEST_SHORT_CODE_OK).unwrap(), |
|||
TEST_RAW_CODE_OK |
|||
); |
|||
|
|||
// raw code -> common code
|
|||
assert!(codec_ffi::raw_code_to_common_code(TEST_RAW_CODE_ERR).is_err()); |
|||
assert!(codec_ffi::raw_code_to_common_code(TEST_RAW_CODE_OK).is_ok()); |
|||
assert_eq!( |
|||
codec_ffi::raw_code_to_common_code(TEST_RAW_CODE_OK).unwrap(), |
|||
TEST_COMMON_CODE_OK |
|||
); |
|||
|
|||
// common code -> raw code
|
|||
assert!(codec_ffi::common_code_to_raw_code(TEST_COMMON_CODE_ERR).is_err()); |
|||
assert!(codec_ffi::common_code_to_raw_code(TEST_COMMON_CODE_OK).is_ok()); |
|||
assert_eq!( |
|||
codec_ffi::common_code_to_raw_code(TEST_COMMON_CODE_OK).unwrap(), |
|||
TEST_RAW_CODE_OK |
|||
); |
|||
|
|||
// short code -> common code
|
|||
assert!(codec_ffi::short_code_to_common_code(TEST_SHORT_CODE_ERR).is_err()); |
|||
assert!(codec_ffi::short_code_to_common_code(TEST_SHORT_CODE_OK).is_ok()); |
|||
assert_eq!( |
|||
codec_ffi::short_code_to_common_code(TEST_SHORT_CODE_OK).unwrap(), |
|||
TEST_COMMON_CODE_OK |
|||
); |
|||
|
|||
// common code -> short code
|
|||
assert!(codec_ffi::common_code_to_short_code(TEST_COMMON_CODE_ERR).is_err()); |
|||
assert!(codec_ffi::common_code_to_short_code(TEST_COMMON_CODE_OK).is_ok()); |
|||
assert_eq!( |
|||
codec_ffi::common_code_to_short_code(TEST_COMMON_CODE_OK).unwrap(), |
|||
TEST_SHORT_CODE_OK |
|||
); |
|||
} |
|||
|
|||
#[test] |
|||
fn convert_unsafe() { |
|||
// raw code <---> short code
|
|||
assert_eq!( |
|||
codec_ffi::raw_code_to_short_code_unsafe(TEST_RAW_CODE_OK), |
|||
TEST_SHORT_CODE_OK |
|||
); |
|||
assert_eq!( |
|||
codec_ffi::short_code_to_raw_code_unsafe(TEST_SHORT_CODE_OK), |
|||
TEST_RAW_CODE_OK |
|||
); |
|||
|
|||
// raw code <---> common code
|
|||
assert_eq!( |
|||
codec_ffi::raw_code_to_common_code_unsafe(TEST_RAW_CODE_OK), |
|||
TEST_COMMON_CODE_OK |
|||
); |
|||
assert_eq!( |
|||
codec_ffi::common_code_to_raw_code_unsafe(TEST_COMMON_CODE_OK), |
|||
TEST_RAW_CODE_OK |
|||
); |
|||
|
|||
// short code <---> common code
|
|||
assert_eq!( |
|||
codec_ffi::short_code_to_common_code_unsafe(TEST_SHORT_CODE_OK), |
|||
TEST_COMMON_CODE_OK |
|||
); |
|||
assert_eq!( |
|||
codec_ffi::common_code_to_short_code_unsafe(TEST_COMMON_CODE_OK), |
|||
TEST_SHORT_CODE_OK |
|||
); |
|||
} |
|||
|
|||
#[test] |
|||
fn mirror() { |
|||
assert!(codec_ffi::is_vertical_mirror(TEST_RAW_CODE_ERR).is_err()); |
|||
assert!(codec_ffi::is_horizontal_mirror(TEST_RAW_CODE_ERR).is_err()); |
|||
assert!(codec_ffi::to_vertical_mirror(TEST_RAW_CODE_ERR).is_err()); |
|||
assert!(codec_ffi::to_horizontal_mirror(TEST_RAW_CODE_ERR).is_err()); |
|||
|
|||
let tmp = codec_ffi::is_vertical_mirror(TEST_RAW_CODE_OK); |
|||
assert!(tmp.is_ok()); |
|||
assert_eq!(tmp.unwrap(), false); |
|||
let tmp = codec_ffi::is_vertical_mirror(TEST_MIRROR_V1); |
|||
assert!(tmp.is_ok()); |
|||
assert_eq!(tmp.unwrap(), false); |
|||
let tmp = codec_ffi::is_vertical_mirror(TEST_MIRROR_V2); |
|||
assert!(tmp.is_ok()); |
|||
assert_eq!(tmp.unwrap(), false); |
|||
|
|||
let tmp = codec_ffi::to_vertical_mirror(TEST_MIRROR_V1); |
|||
assert!(tmp.is_ok()); |
|||
assert_eq!(tmp.unwrap(), TEST_MIRROR_V2); |
|||
let tmp = codec_ffi::to_vertical_mirror(TEST_MIRROR_V2); |
|||
assert!(tmp.is_ok()); |
|||
assert_eq!(tmp.unwrap(), TEST_MIRROR_V1); |
|||
|
|||
let tmp = codec_ffi::is_horizontal_mirror(TEST_MIRROR_H); |
|||
assert!(tmp.is_ok()); |
|||
assert_eq!(tmp.unwrap(), true); |
|||
let tmp = codec_ffi::is_horizontal_mirror(TEST_MIRROR_H1); |
|||
assert!(tmp.is_ok()); |
|||
assert_eq!(tmp.unwrap(), false); |
|||
let tmp = codec_ffi::is_horizontal_mirror(TEST_MIRROR_H2); |
|||
assert!(tmp.is_ok()); |
|||
assert_eq!(tmp.unwrap(), false); |
|||
|
|||
let tmp = codec_ffi::to_horizontal_mirror(TEST_MIRROR_H); |
|||
assert!(tmp.is_ok()); |
|||
assert_eq!(tmp.unwrap(), TEST_MIRROR_H); |
|||
let tmp = codec_ffi::to_horizontal_mirror(TEST_MIRROR_H1); |
|||
assert!(tmp.is_ok()); |
|||
assert_eq!(tmp.unwrap(), TEST_MIRROR_H2); |
|||
let tmp = codec_ffi::to_horizontal_mirror(TEST_MIRROR_H2); |
|||
assert!(tmp.is_ok()); |
|||
assert_eq!(tmp.unwrap(), TEST_MIRROR_H1); |
|||
} |
|||
|
|||
#[test] |
|||
fn mirror_unsafe() { |
|||
assert!(codec_ffi::is_vertical_mirror_unsafe(TEST_MIRROR_V)); |
|||
assert!(!codec_ffi::is_vertical_mirror_unsafe(TEST_MIRROR_V1)); |
|||
assert!(!codec_ffi::is_vertical_mirror_unsafe(TEST_MIRROR_V2)); |
|||
|
|||
assert!(codec_ffi::is_horizontal_mirror_unsafe(TEST_MIRROR_H)); |
|||
assert!(!codec_ffi::is_horizontal_mirror_unsafe(TEST_MIRROR_H1)); |
|||
assert!(!codec_ffi::is_horizontal_mirror_unsafe(TEST_MIRROR_H2)); |
|||
|
|||
assert_eq!( |
|||
codec_ffi::to_vertical_mirror_unsafe(TEST_MIRROR_V), |
|||
TEST_MIRROR_V |
|||
); |
|||
assert_eq!( |
|||
codec_ffi::to_vertical_mirror_unsafe(TEST_MIRROR_V1), |
|||
TEST_MIRROR_V2 |
|||
); |
|||
assert_eq!( |
|||
codec_ffi::to_vertical_mirror_unsafe(TEST_MIRROR_V2), |
|||
TEST_MIRROR_V1 |
|||
); |
|||
|
|||
assert_eq!( |
|||
codec_ffi::to_horizontal_mirror_unsafe(TEST_MIRROR_H), |
|||
TEST_MIRROR_H |
|||
); |
|||
assert_eq!( |
|||
codec_ffi::to_horizontal_mirror_unsafe(TEST_MIRROR_H1), |
|||
TEST_MIRROR_H2 |
|||
); |
|||
assert_eq!( |
|||
codec_ffi::to_horizontal_mirror_unsafe(TEST_MIRROR_H2), |
|||
TEST_MIRROR_H1 |
|||
); |
|||
} |
|||
|
|||
// TODO: string
|
|||
|
|||
// EXPECT_EQ(SHORT_CODE_STR_SIZE, 6);
|
|||
// EXPECT_EQ(COMMON_CODE_STR_SIZE, 10);
|
|||
//
|
|||
// /// short code string verify
|
|||
// uint32_t short_code;
|
|||
// char short_code_buffer[SHORT_CODE_STR_SIZE];
|
|||
// EXPECT_EQ(short_code_to_string(TEST_SHORT_CODE_ERR, short_code_buffer), false);
|
|||
// EXPECT_EQ(short_code_from_string(TEST_SHORT_CODE_STR_ERR, &short_code), false);
|
|||
//
|
|||
// EXPECT_EQ(short_code_to_string(TEST_SHORT_CODE_OK, short_code_buffer), true);
|
|||
// EXPECT_STREQ(short_code_buffer, TEST_SHORT_CODE_STR_OK);
|
|||
// short_code_to_string_unsafe(TEST_SHORT_CODE_OK, short_code_buffer);
|
|||
// EXPECT_STREQ(short_code_buffer, TEST_SHORT_CODE_STR_OK);
|
|||
//
|
|||
// EXPECT_EQ(short_code_from_string(TEST_SHORT_CODE_STR_OK, &short_code), true);
|
|||
// EXPECT_EQ(short_code, TEST_SHORT_CODE_OK);
|
|||
//
|
|||
// /// common code string verify
|
|||
// uint64_t common_code;
|
|||
// char common_code_buffer[COMMON_CODE_STR_SIZE];
|
|||
// EXPECT_EQ(common_code_to_string(TEST_COMMON_CODE_ERR, common_code_buffer), false);
|
|||
// EXPECT_EQ(common_code_from_string(TEST_COMMON_CODE_STR_ERR, &common_code), false);
|
|||
//
|
|||
// EXPECT_EQ(common_code_to_string(TEST_COMMON_CODE_OK, common_code_buffer), true);
|
|||
// EXPECT_STREQ(common_code_buffer, TEST_COMMON_CODE_STR_OK);
|
|||
// common_code_to_string_unsafe(TEST_COMMON_CODE_OK, common_code_buffer);
|
|||
// EXPECT_STREQ(common_code_buffer, TEST_COMMON_CODE_STR_OK);
|
|||
//
|
|||
// EXPECT_EQ(common_code_to_string_shorten(TEST_COMMON_CODE_OK, common_code_buffer), true);
|
|||
// EXPECT_STREQ(common_code_buffer, TEST_COMMON_CODE_STR_SHR_OK);
|
|||
// common_code_to_string_shorten_unsafe(TEST_COMMON_CODE_OK, common_code_buffer);
|
|||
// EXPECT_STREQ(common_code_buffer, TEST_COMMON_CODE_STR_SHR_OK);
|
|||
//
|
|||
// EXPECT_EQ(common_code_from_string(TEST_COMMON_CODE_STR_OK, &common_code), true);
|
|||
// EXPECT_EQ(common_code, TEST_COMMON_CODE_OK);
|
|||
// EXPECT_EQ(common_code_from_string(TEST_COMMON_CODE_STR_SHR_OK, &common_code), true);
|
|||
// EXPECT_EQ(common_code, TEST_COMMON_CODE_OK);
|
|||
|
|||
#[test] |
|||
fn string() { |
|||
// short code string
|
|||
assert!(codec_ffi::short_code_to_string(TEST_SHORT_CODE_ERR).is_err()); |
|||
assert!(codec_ffi::short_code_from_string(TEST_SHORT_CODE_STR_ERR).is_err()); |
|||
|
|||
let tmp = codec_ffi::short_code_to_string(TEST_SHORT_CODE_OK); |
|||
assert!(tmp.is_ok()); |
|||
assert_eq!(tmp.unwrap(), TEST_SHORT_CODE_STR_OK); |
|||
assert_eq!( |
|||
codec_ffi::short_code_to_string_unsafe(TEST_SHORT_CODE_OK), |
|||
TEST_SHORT_CODE_STR_OK |
|||
); |
|||
|
|||
// common code string
|
|||
assert!( |
|||
codec_ffi::common_code_to_string(TEST_COMMON_CODE_ERR).is_err() |
|||
); |
|||
assert!( |
|||
codec_ffi::common_code_to_string_shorten(TEST_COMMON_CODE_ERR).is_err() |
|||
); |
|||
assert!( |
|||
codec_ffi::common_code_from_string(TEST_COMMON_CODE_STR_ERR).is_err() |
|||
); |
|||
|
|||
let tmp = codec_ffi::common_code_to_string(TEST_COMMON_CODE_OK); |
|||
assert!(tmp.is_ok()); |
|||
assert_eq!(tmp.unwrap(), TEST_COMMON_CODE_STR_OK); |
|||
assert_eq!( |
|||
codec_ffi::common_code_to_string_unsafe(TEST_COMMON_CODE_OK), |
|||
TEST_COMMON_CODE_STR_OK |
|||
); |
|||
|
|||
let tmp = codec_ffi::common_code_to_string_shorten(TEST_COMMON_CODE_OK); |
|||
assert!(tmp.is_ok()); |
|||
assert_eq!(tmp.unwrap(), TEST_COMMON_CODE_STR_SHR_OK); |
|||
assert_eq!( |
|||
codec_ffi::common_code_to_string_shorten_unsafe(TEST_COMMON_CODE_OK), |
|||
TEST_COMMON_CODE_STR_SHR_OK |
|||
); |
|||
|
|||
let tmp = codec_ffi::common_code_from_string(TEST_COMMON_CODE_STR_OK); |
|||
assert!(tmp.is_ok()); |
|||
assert_eq!(tmp.unwrap(), TEST_COMMON_CODE_OK); |
|||
let tmp = codec_ffi::common_code_from_string(TEST_COMMON_CODE_STR_SHR_OK); |
|||
assert!(tmp.is_ok()); |
|||
assert_eq!(tmp.unwrap(), TEST_COMMON_CODE_OK); |
|||
} |
|||
} |
Loading…
Reference in new issue