From 91aa435f3709861154bfa123d5fa0c86fe1a4164 Mon Sep 17 00:00:00 2001 From: KtorZ Date: Thu, 1 Aug 2024 15:16:46 +0200 Subject: [PATCH] Fix 'multiline' truncating last character of each line. Fixes #987. --- CHANGELOG.md | 14 ++++++++++++++ crates/aiken-project/src/pretty.rs | 25 ++++++++++++++++++++++++- 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ec7bcd96..4ab23e59 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## v1.1.0 - UNRELEASED + +### Added + +∅ + +### Changed + +- **aiken-project**: fix blueprint's apply truncating last character of outputs. See [#987](https://github.com/aiken-lang/aiken/issues/987). @KtorZ + +### Removed + +∅ + ## v1.0.30-alpha - 2024-07-25 ### Added diff --git a/crates/aiken-project/src/pretty.rs b/crates/aiken-project/src/pretty.rs index a4e8dc13..c53a52d5 100644 --- a/crates/aiken-project/src/pretty.rs +++ b/crates/aiken-project/src/pretty.rs @@ -167,7 +167,7 @@ pub fn multiline(max_len: usize, s: String) -> Vec { let len = s.len(); loop { let lo = i * max_len; - let hi = cmp::min(len - 1, lo + max_len - 1); + let hi = cmp::min(len, lo + max_len); if lo >= len { break; @@ -179,3 +179,26 @@ pub fn multiline(max_len: usize, s: String) -> Vec { } xs } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn multiline_empty_string() { + assert_eq!(multiline(10, "".to_string()), Vec::::new()); + } + + #[test] + fn multiline_single_line() { + assert_eq!(multiline(10, "foo".to_string()), vec!["foo".to_string()]); + } + + #[test] + fn multiline_many_lines() { + assert_eq!( + multiline(3, "foobar".to_string()), + vec!["foo".to_string(), "bar".to_string()] + ); + } +}