From 941100d7151ec9caaf0a79fcf6657f51e518600f Mon Sep 17 00:00:00 2001 From: Andras Schmelczer Date: Tue, 1 Apr 2025 22:46:03 +0100 Subject: [PATCH] Lint --- .../src/operation_transformation/cursor.rs | 3 ++ backend/reconcile/tests/example_document.rs | 37 +++++++++++++++---- backend/reconcile/tests/test.rs | 5 +-- backend/sync_lib/src/cursor.rs | 4 +- 4 files changed, 37 insertions(+), 12 deletions(-) diff --git a/backend/reconcile/src/operation_transformation/cursor.rs b/backend/reconcile/src/operation_transformation/cursor.rs index 60abff22..0f2ee509 100644 --- a/backend/reconcile/src/operation_transformation/cursor.rs +++ b/backend/reconcile/src/operation_transformation/cursor.rs @@ -16,6 +16,7 @@ pub struct CursorPosition { } impl CursorPosition { + #[must_use] pub fn apply_merge_context(&self, context: &MergeContext) -> Self where T: PartialEq + Clone + std::fmt::Debug, @@ -40,6 +41,7 @@ pub struct TextWithCursors<'a> { } impl<'a> TextWithCursors<'a> { + #[must_use] pub fn new(text: &'a str, cursors: Vec) -> Self { Self { text: text.into(), @@ -47,6 +49,7 @@ impl<'a> TextWithCursors<'a> { } } + #[must_use] pub fn new_owned(text: String, cursors: Vec) -> Self { Self { text: text.into(), diff --git a/backend/reconcile/tests/example_document.rs b/backend/reconcile/tests/example_document.rs index 6bf845be..75f5bdab 100644 --- a/backend/reconcile/tests/example_document.rs +++ b/backend/reconcile/tests/example_document.rs @@ -1,10 +1,10 @@ use std::{fs, path::Path}; use pretty_assertions::assert_eq; -use reconcile::{CursorPosition, TextWithCursors, reconcile_with_cursors}; +use reconcile::{CursorPosition, TextWithCursors}; use serde::Deserialize; -/// ExampleDocument represents a test case for the reconciliation process. +/// `ExampleDocument` represents a test case for the reconciliation process. /// It contains a parent string, left and right strings with cursor positions, /// and the expected result after reconciliation. /// @@ -19,26 +19,49 @@ pub struct ExampleDocument { } impl ExampleDocument { + /// Creates a new `ExampleDocument` instance from a YAML file. + /// + /// # Panics + /// + /// If the file cannot be opened or parsed, the program will panic. + #[must_use] pub fn from_yaml(path: &Path) -> Self { let file = fs::File::open(path).expect("Failed to open example file"); serde_yaml::from_reader(file).expect("Failed to parse example file") } + #[must_use] pub fn parent(&self) -> String { self.parent.clone() } + #[must_use] pub fn left(&self) -> TextWithCursors<'static> { ExampleDocument::string_to_text_with_cursors(&self.left) } + #[must_use] pub fn right(&self) -> TextWithCursors<'static> { ExampleDocument::string_to_text_with_cursors(&self.right) } - pub fn assert_eq(&self, result: TextWithCursors<'static>) { - let result_str = ExampleDocument::text_with_cursors_to_string(&result); + /// Asserts that the result string matches the expected string, + /// including cursor positions. + /// + /// # Panics + /// + /// If the result string does not match the expected string, the program + /// will panic. + pub fn assert_eq(&self, result: &TextWithCursors<'static>) { + let result_str = ExampleDocument::text_with_cursors_to_string(result); assert_eq!(result_str, self.expected); } + /// Asserts that the result string matches the expected string, + /// ignoring cursor positions. + /// + /// # Panics + /// + /// If the result string does not match the expected string, the program + /// will panic. pub fn assert_eq_without_cursors(&self, result: &str) { assert_eq!( result, @@ -46,7 +69,7 @@ impl ExampleDocument { ); } - fn text_with_cursors_to_string<'a>(text: &TextWithCursors<'a>) -> String { + fn text_with_cursors_to_string(text: &TextWithCursors<'_>) -> String { let mut result = text.text.clone().into_owned(); for (i, cursor) in text.cursors.iter().enumerate() { result.insert(cursor.char_index + i, '|'); @@ -55,8 +78,8 @@ impl ExampleDocument { } fn string_to_text_with_cursors(text: &str) -> TextWithCursors<'static> { - let cursors = Self::parse_cursors(&text); - let text = text.replace("|", ""); + let cursors = Self::parse_cursors(text); + let text = text.replace('|', ""); TextWithCursors::new_owned(text, cursors) } diff --git a/backend/reconcile/tests/test.rs b/backend/reconcile/tests/test.rs index 4b8382d0..6c7b3ec7 100644 --- a/backend/reconcile/tests/test.rs +++ b/backend/reconcile/tests/test.rs @@ -2,8 +2,7 @@ mod example_document; use std::{fs, path::Path}; use example_document::ExampleDocument; -use reconcile::{CursorPosition, TextWithCursors, reconcile, reconcile_with_cursors}; -use serde::Deserialize; +use reconcile::{reconcile, reconcile_with_cursors}; #[test] fn test_with_examples() { @@ -19,7 +18,7 @@ fn test_with_examples() { .path(); path.file_name() .and_then(|name| name.to_str()) - .and_then(|name| name.split(".").next().unwrap().parse::().ok()) + .and_then(|name| name.split('.').next().unwrap().parse::().ok()) .unwrap_or_default() }); diff --git a/backend/sync_lib/src/cursor.rs b/backend/sync_lib/src/cursor.rs index 4b5b9a6d..6b61a078 100644 --- a/backend/sync_lib/src/cursor.rs +++ b/backend/sync_lib/src/cursor.rs @@ -25,7 +25,7 @@ impl From for TextWithCursors<'_> { owned .cursors .into_iter() - .map(|cursor| cursor.into()) + .map(std::convert::Into::into) .collect(), ) } @@ -38,7 +38,7 @@ impl From> for OwnedTextWithCursors { cursors: text_with_cursors .cursors .into_iter() - .map(|cursor| cursor.into()) + .map(std::convert::Into::into) .collect(), } }