page_count drops the last partial page: page_count(11, 5) returns 2 but should return 3. Please add a test.
Done- Plan (done)
- Code (done)
- Test (done)
- Review (done)
- Finish (done)
Cost
$0.0055
Tests
Passed
Iterations
1
Re-plans
0
LLM calls
10
Prompt read from cache
52%
Usage by agent
- Cache read
- Cache write
- Input
- Output
View as table
| Agent | Cost | Cache read | Cache write | Input | Output |
|---|---|---|---|---|---|
| planner | $0.0010 | 4,416 | 2,791 | 8 | 1,259 |
| coder | $0.0017 | 7,847 | 5,805 | 8 | 1,749 |
| tester | $0.0016 | 9,169 | 6,312 | 8 | 1,453 |
| reviewer | $0.0012 | 0 | 4,642 | 4 | 1,256 |
Timeline
-
planner iteration 1 Finished 3 calls · 8,474 tokens · $0.0010 · 8.0s
Loading…
-
coder iteration 1 Finished 3 calls · 15.4K tokens · $0.0017 · 10.8s
Loading…
-
tester iteration 1 Finished 3 calls · 16.9K tokens · $0.0016 · 8.8s
Loading…
-
verify iteration 1 Passed 0.3s
running 5 tests test tests::exact_multiple ... ok test tests::no_overflow_near_max ... ok test tests::fewer_than_one_page ... ok test tests::partial_last_page ... ok test tests::zero_items ... ok test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s running 8 tests test even_division ... ok test label ... ok test fewer_than_one_page ... ok test partial_label ... ok test partial_last_page ... ok test large_total_no_overflow ... ok test one_item_per_page ... ok test zero_items_no_pages ... ok test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Finished `test` profile [unoptimized] target(s) in 0.01s Running unittests src/lib.rs (.devswarm-target/debug/deps/buggy_rust-8b86c0ee2c25eb65) Running tests/pages.rs (.devswarm-target/debug/deps/pages-e0b59a8108228923) Doc-tests buggy_rust -
reviewer iteration 1 Finished 1 calls · 5,902 tokens · $0.0012 · 7.6s
Loading…
Final diff
diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..f25e053 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,16 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "buggy_rust" +version = "0.1.0" +dependencies = [ + "itoa", +] + +[[package]] +name = "itoa" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bd1574e617a9a6c1f8f8181bd7e841e1f20e4277607ef28945765188d6284d4" diff --git a/src/lib.rs b/src/lib.rs index 23d2dd3..853f537 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,9 +1,40 @@ /// How many pages are needed to show `total` items, `size` per page. pub fn page_count(total: u32, size: u32) -> u32 { - total / size + total / size + u32::from(total % size != 0) } /// The page count as text. pub fn page_label(total: u32, size: u32) -> String { itoa::Buffer::new().format(page_count(total, size)).to_string() } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn partial_last_page() { + assert_eq!(page_count(11, 5), 3); + assert_eq!(page_label(11, 5), "3"); + } + + #[test] + fn exact_multiple() { + assert_eq!(page_count(10, 5), 2); + } + + #[test] + fn zero_items() { + assert_eq!(page_count(0, 5), 0); + } + + #[test] + fn fewer_than_one_page() { + assert_eq!(page_count(3, 5), 1); + } + + #[test] + fn no_overflow_near_max() { + assert_eq!(page_count(u32::MAX, 2), u32::MAX / 2 + 1); + } +} diff --git a/tests/pages.rs b/tests/pages.rs index 39e3b10..40a7853 100644 --- a/tests/pages.rs +++ b/tests/pages.rs @@ -9,3 +9,34 @@ fn even_division() { fn label() { assert_eq!(page_label(10, 5), "2"); } + +#[test] +fn partial_last_page() { + assert_eq!(page_count(11, 5), 3); +} + +#[test] +fn partial_label() { + assert_eq!(page_label(11, 5), "3"); +} + +#[test] +fn zero_items_no_pages() { + assert_eq!(page_count(0, 5), 0); +} + +#[test] +fn fewer_than_one_page() { + assert_eq!(page_count(3, 5), 1); +} + +#[test] +fn one_item_per_page() { + assert_eq!(page_count(7, 1), 7); +} + +#[test] +fn large_total_no_overflow() { + assert_eq!(page_count(u32::MAX, 2), u32::MAX / 2 + 1); + assert_eq!(page_count(u32::MAX, u32::MAX), 1); +}