()
| 1314 | |
| 1315 | #[test] |
| 1316 | fn test_edge_cases() -> anyhow::Result<()> { |
| 1317 | let adata = create_test_anndata()?; |
| 1318 | |
| 1319 | let result = rank_gene_groups( |
| 1320 | &adata, |
| 1321 | "group", |
| 1322 | Some("B"), |
| 1323 | Some(&["INVALID_GROUP"]), |
| 1324 | Some("error_test"), |
| 1325 | None, |
| 1326 | None, |
| 1327 | CorrectionMethod::BejaminiHochberg, |
| 1328 | None, |
| 1329 | None, |
| 1330 | ); |
| 1331 | assert!(result.is_err(), "Should fail with invalid group name"); |
| 1332 | |
| 1333 | let result = rank_gene_groups( |
| 1334 | &adata, |
| 1335 | "group", |
| 1336 | Some("INVALID_REF"), |
| 1337 | Some(&["A"]), |
| 1338 | Some("error_test2"), |
| 1339 | None, |
| 1340 | None, |
| 1341 | CorrectionMethod::BejaminiHochberg, |
| 1342 | None, |
| 1343 | None, |
| 1344 | ); |
| 1345 | assert!(result.is_err(), "Should fail with invalid reference group"); |
| 1346 | |
| 1347 | rank_gene_groups( |
| 1348 | &adata, |
| 1349 | "group", |
| 1350 | Some("B"), |
| 1351 | Some(&["A"]), |
| 1352 | Some("zero_genes"), |
| 1353 | None, |
| 1354 | Some(0), |
| 1355 | CorrectionMethod::BejaminiHochberg, |
| 1356 | None, |
| 1357 | None, |
| 1358 | )?; |
| 1359 | |
| 1360 | let uns = adata.uns(); |
| 1361 | let scores = uns.get_data("rank_genes_groups_zero_genes_scores")?; |
| 1362 | match scores.get_data()? { |
| 1363 | Data::ArrayData(ArrayData::DataFrame(df)) => { |
| 1364 | assert_eq!(df.height(), 0, "Should return 0 genes when n_genes=0"); |
| 1365 | } |
| 1366 | _ => panic!("Expected DataFrame for scores"), |
| 1367 | } |
| 1368 | |
| 1369 | Ok(()) |
| 1370 | } |
| 1371 | |
| 1372 | fn create_test_anndata_three_groups() -> anyhow::Result<IMAnnData> { |
| 1373 | let mut rows = Vec::new(); |
nothing calls this directly
no test coverage detected