#[cfg(test)]
mod tests {
use pandrs::error::Result;
use pandrs::{Column, OptimizedDataFrame, StringColumn};
#[test]
#[allow(clippy::result_large_err)]
fn test_optimized_melt() -> Result<()> {
let mut df = OptimizedDataFrame::new();
let id_col = StringColumn::new(vec!["1".to_string(), "2".to_string()]);
df.add_column("id", Column::String(id_col))?;
let a_col = StringColumn::new(vec!["a1".to_string(), "a2".to_string()]);
df.add_column("A", Column::String(a_col))?;
let b_col = StringColumn::new(vec!["b1".to_string(), "b2".to_string()]);
df.add_column("B", Column::String(b_col))?;
let melted = df.melt(&["id"], Some(&["A", "B"]), Some("variable"), Some("value"))?;
assert_eq!(melted.column_count(), 3); assert_eq!(melted.row_count(), 4);
let columns = melted.column_names();
assert!(columns.contains(&"id".to_string()));
assert!(columns.contains(&"variable".to_string()));
assert!(columns.contains(&"value".to_string()));
Ok(())
}
#[test]
#[allow(clippy::result_large_err)]
fn test_optimized_concat() -> Result<()> {
let mut df1 = OptimizedDataFrame::new();
let id_col1 = StringColumn::new(vec!["1".to_string(), "2".to_string()]);
df1.add_column("id", Column::String(id_col1))?;
let value_col1 = StringColumn::new(vec!["a".to_string(), "b".to_string()]);
df1.add_column("value", Column::String(value_col1))?;
let mut df2 = OptimizedDataFrame::new();
let id_col2 = StringColumn::new(vec!["3".to_string(), "4".to_string()]);
df2.add_column("id", Column::String(id_col2))?;
let value_col2 = StringColumn::new(vec!["c".to_string(), "d".to_string()]);
df2.add_column("value", Column::String(value_col2))?;
let concat_df = df1.append(&df2)?;
assert_eq!(concat_df.column_count(), 2);
assert_eq!(concat_df.row_count(), 4);
assert!(concat_df.contains_column("id"));
assert!(concat_df.contains_column("value"));
Ok(())
}
#[test]
#[allow(clippy::result_large_err)]
fn test_optimized_concat_different_columns() -> Result<()> {
let mut df1 = OptimizedDataFrame::new();
let id_col1 = StringColumn::new(vec!["1".to_string(), "2".to_string()]);
df1.add_column("id", Column::String(id_col1))?;
let a_col = StringColumn::new(vec!["a1".to_string(), "a2".to_string()]);
df1.add_column("A", Column::String(a_col))?;
let mut df2 = OptimizedDataFrame::new();
let id_col2 = StringColumn::new(vec!["3".to_string(), "4".to_string()]);
df2.add_column("id", Column::String(id_col2))?;
let b_col = StringColumn::new(vec!["b3".to_string(), "b4".to_string()]);
df2.add_column("B", Column::String(b_col))?;
let concat_df = df1.append(&df2)?;
assert_eq!(concat_df.column_count(), 3); assert_eq!(concat_df.row_count(), 4);
assert!(concat_df.contains_column("id"));
assert!(concat_df.contains_column("A"));
assert!(concat_df.contains_column("B"));
Ok(())
}
}