tests(error_derive): Init
This commit is contained in:
parent
4feae61a76
commit
d27eea711a
|
@ -0,0 +1,75 @@
|
||||||
|
# Host files
|
||||||
|
|
||||||
|
File path: `out/dir/api.rs`
|
||||||
|
|
||||||
|
```rust
|
||||||
|
// Host code
|
||||||
|
/* Rust API */
|
||||||
|
#[derive(trixy::__private::thiserror::Error)]
|
||||||
|
#[allow(non_camel_case_types)]
|
||||||
|
#[derive(Debug)]
|
||||||
|
pub enum ErrorOne {
|
||||||
|
#[error("I'm an error")]
|
||||||
|
Error,
|
||||||
|
#[error("I'm also an error'")]
|
||||||
|
ErrorB,
|
||||||
|
}
|
||||||
|
impl From<crate::ErrorOne_c> for ErrorOne {
|
||||||
|
fn from(value: crate::ErrorOne_c) -> Self {
|
||||||
|
match value {
|
||||||
|
crate::ErrorOne_c::Error => Self::Error,
|
||||||
|
crate::ErrorOne_c::ErrorB => Self::ErrorB,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#[derive(Debug)]
|
||||||
|
pub enum Commands {}
|
||||||
|
/* C API */
|
||||||
|
#[derive(trixy::__private::thiserror::Error)]
|
||||||
|
#[allow(non_camel_case_types)]
|
||||||
|
#[repr(C)]
|
||||||
|
#[derive(Debug)]
|
||||||
|
pub enum ErrorOne_c {
|
||||||
|
#[error("I'm an error")]
|
||||||
|
Error,
|
||||||
|
#[error("I'm also an error'")]
|
||||||
|
ErrorB,
|
||||||
|
}
|
||||||
|
impl From<crate::ErrorOne> for ErrorOne_c {
|
||||||
|
fn from(value: crate::ErrorOne) -> Self {
|
||||||
|
match value {
|
||||||
|
crate::ErrorOne::Error => Self::Error,
|
||||||
|
crate::ErrorOne::ErrorB => Self::ErrorB,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// vim: filetype=rust
|
||||||
|
```
|
||||||
|
|
||||||
|
# Auxiliary files
|
||||||
|
|
||||||
|
File path: `dist/interface.h`
|
||||||
|
|
||||||
|
```c
|
||||||
|
#if !defined TRIXY_MAIN_HEADER
|
||||||
|
#define TRIXY_MAIN_HEADER
|
||||||
|
|
||||||
|
#include "errno.h"
|
||||||
|
#include "string.h"
|
||||||
|
#include "vec.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
*/
|
||||||
|
enum ErrorOne
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
*/
|
||||||
|
Error,
|
||||||
|
/**
|
||||||
|
*/
|
||||||
|
ErrorB,
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // if !defined TRIXY_MAIN_HEADER
|
||||||
|
// vim: filetype=c
|
||||||
|
```
|
|
@ -0,0 +1,35 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2023 - 2024:
|
||||||
|
* The Trinitrix Project <soispha@vhack.eu, antifallobst@systemausfall.org>
|
||||||
|
* SPDX-License-Identifier: LGPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* This file is part of the Trixy crate for Trinitrix.
|
||||||
|
*
|
||||||
|
* Trixy is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the Lesser GNU General Public License as
|
||||||
|
* published by the Free Software Foundation, either version 3 of
|
||||||
|
* the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* and the Lesser GNU General Public License along with this program.
|
||||||
|
* If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#[derive(Error)]
|
||||||
|
enum ErrorOne {
|
||||||
|
#[error = "I'm an error"]
|
||||||
|
Error,
|
||||||
|
|
||||||
|
#[error = "I'm also an error'"]
|
||||||
|
ErrorB,
|
||||||
|
|
||||||
|
// TODO: We also need to assert, that all enum veriants have the error attribute. <2024-05-19>
|
||||||
|
}
|
||||||
|
|
||||||
|
// Trixy is sort of a subset of rust
|
||||||
|
// vim: syntax=rust
|
|
@ -0,0 +1,39 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2023 - 2024:
|
||||||
|
* The Trinitrix Project <soispha@vhack.eu, antifallobst@systemausfall.org>
|
||||||
|
* SPDX-License-Identifier: LGPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* This file is part of the Trixy crate for Trinitrix.
|
||||||
|
*
|
||||||
|
* Trixy is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the Lesser GNU General Public License as
|
||||||
|
* published by the Free Software Foundation, either version 3 of
|
||||||
|
* the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* and the Lesser GNU General Public License along with this program.
|
||||||
|
* If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
use pretty_assertions::assert_eq;
|
||||||
|
use trixy::macros::config::{file_tree::FileTree, trixy::TrixyConfig};
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
pub fn error_derive() {
|
||||||
|
let input = include_str!("./expected.md");
|
||||||
|
let expected: FileTree = input.parse().unwrap();
|
||||||
|
|
||||||
|
let config = TrixyConfig::new("callback_function")
|
||||||
|
.out_dir_path("out/dir")
|
||||||
|
.trixy_path("./tests/error_derive/input.tri")
|
||||||
|
.dist_dir_path("dist")
|
||||||
|
.add_c_headers(false);
|
||||||
|
|
||||||
|
let actual = config.generate();
|
||||||
|
assert_eq!(expected, actual);
|
||||||
|
}
|
Reference in New Issue