From 9e2c90a887edda773428c9839af3b81c47074001 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Sun, 6 Apr 2025 09:13:58 -0700 Subject: [PATCH] Fixes --- rust/pspp/src/output/pivot/mod.rs | 3 +- rust/pspp/src/output/pivot/output.rs | 9 +++--- rust/pspp/src/output/pivot/test.rs | 41 +++++++++++++++++++++++++++- 3 files changed, 45 insertions(+), 8 deletions(-) diff --git a/rust/pspp/src/output/pivot/mod.rs b/rust/pspp/src/output/pivot/mod.rs index 9f13556f34..b8d0b8d074 100644 --- a/rust/pspp/src/output/pivot/mod.rs +++ b/rust/pspp/src/output/pivot/mod.rs @@ -124,7 +124,7 @@ impl Area { Area::Caption => (Some(Left), Top, [8, 11], [1, 1]), Area::Footer => (Some(Left), Top, [11, 8], [2, 3]), Area::Corner => (Some(Left), Bottom, [8, 11], [1, 1]), - Area::ColumnLabels => (Some(Left), Top, [8, 11], [1, 3]), + Area::ColumnLabels => (Some(Center), Top, [8, 11], [1, 3]), Area::RowLabels => (Some(Left), Top, [8, 11], [1, 3]), Area::Data => (None, Top, [8, 11], [1, 1]), Area::Layers => (Some(Left), Bottom, [8, 11], [1, 3]), @@ -659,7 +659,6 @@ impl PivotTableBuilder { ); } pub fn build(self) -> PivotTable { - let row_label_position = self.look.row_label_position; let corner_text = false; let mut table = PivotTable::new(self.title, self.look.clone()); let mut dimensions = Vec::with_capacity(self.dimensions.len()); diff --git a/rust/pspp/src/output/pivot/output.rs b/rust/pspp/src/output/pivot/output.rs index 43707ceddc..3679e6be61 100644 --- a/rust/pspp/src/output/pivot/output.rs +++ b/rust/pspp/src/output/pivot/output.rs @@ -297,11 +297,11 @@ impl PivotTable { self.output_footnotes(&self.collect_footnotes(tables.into_iter().flatten())); OutputTables { - title: None, - layers: None, + title, + layers, body, - caption: None, - footnotes: None, + caption, + footnotes, } } @@ -376,7 +376,6 @@ fn compose_headings( ) { let v = !h; let h_axis = &pt.axes[h.into()]; - let v_axis = &pt.axes[v.into()]; let v_size = pt.axis_label_depth(h.into()); let h_ofs = pt.axis_label_depth(v.into()); let n_columns = column_enumeration.len(); diff --git a/rust/pspp/src/output/pivot/test.rs b/rust/pspp/src/output/pivot/test.rs index 97bae33091..0ef37dfb24 100644 --- a/rust/pspp/src/output/pivot/test.rs +++ b/rust/pspp/src/output/pivot/test.rs @@ -31,7 +31,7 @@ fn pivot_table_1d() { let dimension = DimensionBuilder::new(Axis3::X, bigger_group); let mut pt = PivotTableBuilder::new(Value::new_text("Columns"), &[dimension]); for i in 0..5 { - pt.insert(&[i], Value::new_number(Some(i as f64))); + pt.insert(&[i], Value::new_integer(Some(i as f64))); } let mut driver = TextDriver::new(File::create("/dev/stdout").unwrap()); let mut pt = pt.build(); @@ -39,3 +39,42 @@ fn pivot_table_1d() { pt.transpose(); driver.write(&Arc::new(Item::new(Details::Table(Box::new(pt))))); } + +#[test] +fn pivot_table_2d() { + let mut a = GroupBuilder::new(Value::new_text("a")); + for name in ["a1", "a2", "a3"] { + a.push(Value::new_text(name)); + } + let d1 = DimensionBuilder::new(Axis3::X, a); + + let mut b = GroupBuilder::new(Value::new_text("b")); + for name in ["b1", "b2", "b3"] { + b.push(Value::new_text(name)); + } + let d2 = DimensionBuilder::new(Axis3::X, b); + + let mut pt = PivotTableBuilder::new(Value::new_text("Columns"), &[d1, d2]); + let mut i = 0; + for a in 0..3 { + for b in 0..3 { + pt.insert(&[a, b], Value::new_integer(Some(i as f64))); + i += 1; + } + } + let mut pt = pt.build(); + let mut driver = TextDriver::new(File::create("/dev/stdout").unwrap()); + driver.write(&Arc::new(Item::new(Details::Table(Box::new(pt.clone()))))); + + pt.transpose(); + pt.title = Some(Box::new(Value::new_text("Rows"))); + driver.write(&Arc::new(Item::new(Details::Table(Box::new(pt.clone()))))); + + pt.move_dimension(0, Axis3::X, 0); + pt.title = Some(Box::new(Value::new_text("Column x Row"))); + driver.write(&Arc::new(Item::new(Details::Table(Box::new(pt.clone()))))); + + pt.transpose(); + pt.title = Some(Box::new(Value::new_text("Row x Column"))); + driver.write(&Arc::new(Item::new(Details::Table(Box::new(pt.clone()))))); +} -- 2.30.2