Skip to content

Commit e1b1ea9

Browse files
konardclaude
andcommitted
refactor: move Rust tests to separate test files
Move all unit tests from inline #[cfg(test)] modules to separate files in the rust/tests/ directory, keeping source files clean and focused. Tests moved: - link.rs tests -> tests/link_tests.rs - lino_link.rs tests -> tests/lino_link_tests.rs - parser.rs tests -> tests/parser_tests.rs - changes_simplifier.rs tests -> tests/changes_simplifier_tests.rs - link_storage.rs tests -> tests/link_storage_tests.rs - query_processor.rs tests -> tests/query_processor_tests.rs All 36 tests pass. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 2e7aeff commit e1b1ea9

12 files changed

+631
-641
lines changed

rust/src/changes_simplifier.rs

Lines changed: 0 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -105,49 +105,3 @@ pub fn simplify_changes(changes: Vec<(Link, Link)>) -> Vec<(Link, Link)> {
105105

106106
results
107107
}
108-
109-
#[cfg(test)]
110-
mod tests {
111-
use super::*;
112-
113-
#[test]
114-
fn test_simplify_empty() {
115-
let changes: Vec<(Link, Link)> = vec![];
116-
let result = simplify_changes(changes);
117-
assert!(result.is_empty());
118-
}
119-
120-
#[test]
121-
fn test_simplify_no_op() {
122-
let link = Link::new(1, 2, 3);
123-
let changes = vec![(link, link)];
124-
let result = simplify_changes(changes);
125-
assert_eq!(result.len(), 1);
126-
assert_eq!(result[0], (link, link));
127-
}
128-
129-
#[test]
130-
fn test_simplify_chain() {
131-
let link1 = Link::new(1, 1, 1);
132-
let link2 = Link::new(1, 2, 2);
133-
let link3 = Link::new(1, 3, 3);
134-
135-
let changes = vec![(link1, link2), (link2, link3)];
136-
let result = simplify_changes(changes);
137-
138-
assert_eq!(result.len(), 1);
139-
assert_eq!(result[0], (link1, link3));
140-
}
141-
142-
#[test]
143-
fn test_simplify_with_unchanged() {
144-
let unchanged = Link::new(2, 2, 2);
145-
let link1 = Link::new(1, 1, 1);
146-
let link2 = Link::new(1, 2, 2);
147-
148-
let changes = vec![(unchanged, unchanged), (link1, link2)];
149-
let result = simplify_changes(changes);
150-
151-
assert_eq!(result.len(), 2);
152-
}
153-
}

rust/src/link.rs

Lines changed: 0 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -36,40 +36,3 @@ impl Link {
3636
format!("({} {} {})", self.index, self.source, self.target)
3737
}
3838
}
39-
40-
#[cfg(test)]
41-
mod tests {
42-
use super::*;
43-
44-
#[test]
45-
fn test_link_creation() {
46-
let link = Link::new(1, 2, 3);
47-
assert_eq!(link.index, 1);
48-
assert_eq!(link.source, 2);
49-
assert_eq!(link.target, 3);
50-
}
51-
52-
#[test]
53-
fn test_link_is_null() {
54-
let null_link = Link::default();
55-
assert!(null_link.is_null());
56-
57-
let non_null_link = Link::new(1, 2, 3);
58-
assert!(!non_null_link.is_null());
59-
}
60-
61-
#[test]
62-
fn test_link_is_full_point() {
63-
let point = Link::new(1, 1, 1);
64-
assert!(point.is_full_point());
65-
66-
let non_point = Link::new(1, 2, 3);
67-
assert!(!non_point.is_full_point());
68-
}
69-
70-
#[test]
71-
fn test_link_format() {
72-
let link = Link::new(1, 2, 3);
73-
assert_eq!(link.format(), "(1 2 3)");
74-
}
75-
}

rust/src/link_storage.rs

Lines changed: 0 additions & 120 deletions
Original file line numberDiff line numberDiff line change
@@ -408,123 +408,3 @@ impl LinkStorage {
408408
self.trace
409409
}
410410
}
411-
412-
#[cfg(test)]
413-
mod tests {
414-
use super::*;
415-
use tempfile::NamedTempFile;
416-
417-
#[test]
418-
fn test_storage_create() -> Result<()> {
419-
let temp_file = NamedTempFile::new()?;
420-
let db_path = temp_file.path().to_str().unwrap();
421-
422-
let mut storage = LinkStorage::new(db_path, false)?;
423-
let id = storage.create(2, 3);
424-
425-
assert!(id > 0);
426-
let link = storage.get(id).unwrap();
427-
assert_eq!(link.source, 2);
428-
assert_eq!(link.target, 3);
429-
430-
Ok(())
431-
}
432-
433-
#[test]
434-
fn test_storage_update() -> Result<()> {
435-
let temp_file = NamedTempFile::new()?;
436-
let db_path = temp_file.path().to_str().unwrap();
437-
438-
let mut storage = LinkStorage::new(db_path, false)?;
439-
let id = storage.create(2, 3);
440-
storage.update(id, 4, 5)?;
441-
442-
let link = storage.get(id).unwrap();
443-
assert_eq!(link.source, 4);
444-
assert_eq!(link.target, 5);
445-
446-
Ok(())
447-
}
448-
449-
#[test]
450-
fn test_storage_delete() -> Result<()> {
451-
let temp_file = NamedTempFile::new()?;
452-
let db_path = temp_file.path().to_str().unwrap();
453-
454-
let mut storage = LinkStorage::new(db_path, false)?;
455-
let id = storage.create(2, 3);
456-
storage.delete(id)?;
457-
458-
assert!(storage.get(id).is_none());
459-
460-
Ok(())
461-
}
462-
463-
#[test]
464-
fn test_storage_persistence() -> Result<()> {
465-
let temp_file = NamedTempFile::new()?;
466-
let db_path = temp_file.path().to_str().unwrap();
467-
468-
// Create and save
469-
{
470-
let mut storage = LinkStorage::new(db_path, false)?;
471-
storage.create(2, 3);
472-
storage.save()?;
473-
}
474-
475-
// Load and verify
476-
{
477-
let storage = LinkStorage::new(db_path, false)?;
478-
let links = storage.all();
479-
assert_eq!(links.len(), 1);
480-
assert_eq!(links[0].source, 2);
481-
assert_eq!(links[0].target, 3);
482-
}
483-
484-
Ok(())
485-
}
486-
487-
#[test]
488-
fn test_storage_named_links() -> Result<()> {
489-
let temp_file = NamedTempFile::new()?;
490-
let db_path = temp_file.path().to_str().unwrap();
491-
492-
let mut storage = LinkStorage::new(db_path, false)?;
493-
let id = storage.get_or_create_named("test");
494-
495-
assert!(id > 0);
496-
assert_eq!(storage.get_name(id), Some(&"test".to_string()));
497-
assert_eq!(storage.get_by_name("test"), Some(id));
498-
499-
Ok(())
500-
}
501-
502-
#[test]
503-
fn test_storage_search() -> Result<()> {
504-
let temp_file = NamedTempFile::new()?;
505-
let db_path = temp_file.path().to_str().unwrap();
506-
507-
let mut storage = LinkStorage::new(db_path, false)?;
508-
let id = storage.create(2, 3);
509-
510-
assert_eq!(storage.search(2, 3), Some(id));
511-
assert_eq!(storage.search(1, 1), None);
512-
513-
Ok(())
514-
}
515-
516-
#[test]
517-
fn test_storage_get_or_create() -> Result<()> {
518-
let temp_file = NamedTempFile::new()?;
519-
let db_path = temp_file.path().to_str().unwrap();
520-
521-
let mut storage = LinkStorage::new(db_path, false)?;
522-
523-
let id1 = storage.get_or_create(2, 3);
524-
let id2 = storage.get_or_create(2, 3);
525-
526-
assert_eq!(id1, id2);
527-
528-
Ok(())
529-
}
530-
}

rust/src/lino_link.rs

Lines changed: 0 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -57,51 +57,3 @@ impl LinoLink {
5757
self.id.as_ref().is_some_and(|id| id.parse::<u32>().is_ok())
5858
}
5959
}
60-
61-
#[cfg(test)]
62-
mod tests {
63-
use super::*;
64-
65-
#[test]
66-
fn test_lino_link_new() {
67-
let link = LinoLink::new(Some("test".to_string()));
68-
assert_eq!(link.id, Some("test".to_string()));
69-
assert!(link.values.is_none());
70-
}
71-
72-
#[test]
73-
fn test_lino_link_with_values() {
74-
let child1 = LinoLink::new(Some("1".to_string()));
75-
let child2 = LinoLink::new(Some("2".to_string()));
76-
let link = LinoLink::with_values(Some("parent".to_string()), vec![child1, child2]);
77-
assert_eq!(link.id, Some("parent".to_string()));
78-
assert_eq!(link.values_count(), 2);
79-
}
80-
81-
#[test]
82-
fn test_lino_link_is_variable() {
83-
let var = LinoLink::new(Some("$var".to_string()));
84-
assert!(var.is_variable());
85-
86-
let non_var = LinoLink::new(Some("test".to_string()));
87-
assert!(!non_var.is_variable());
88-
}
89-
90-
#[test]
91-
fn test_lino_link_is_wildcard() {
92-
let wildcard = LinoLink::new(Some("*".to_string()));
93-
assert!(wildcard.is_wildcard());
94-
95-
let non_wildcard = LinoLink::new(Some("test".to_string()));
96-
assert!(!non_wildcard.is_wildcard());
97-
}
98-
99-
#[test]
100-
fn test_lino_link_is_numeric() {
101-
let numeric = LinoLink::new(Some("123".to_string()));
102-
assert!(numeric.is_numeric());
103-
104-
let non_numeric = LinoLink::new(Some("test".to_string()));
105-
assert!(!non_numeric.is_numeric());
106-
}
107-
}

rust/src/parser.rs

Lines changed: 0 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -168,65 +168,3 @@ impl Default for Parser {
168168
Self::new()
169169
}
170170
}
171-
172-
#[cfg(test)]
173-
mod tests {
174-
use super::*;
175-
176-
#[test]
177-
fn test_parse_empty() {
178-
let parser = Parser::new();
179-
let result = parser.parse("").unwrap();
180-
assert!(result.is_empty());
181-
}
182-
183-
#[test]
184-
fn test_parse_simple_link() {
185-
let parser = Parser::new();
186-
let result = parser.parse("(1 2)").unwrap();
187-
assert_eq!(result.len(), 1);
188-
assert_eq!(result[0].values_count(), 2);
189-
}
190-
191-
#[test]
192-
fn test_parse_nested_link() {
193-
let parser = Parser::new();
194-
let result = parser.parse("((1 2) (3 4))").unwrap();
195-
assert_eq!(result.len(), 1);
196-
assert_eq!(result[0].values_count(), 2);
197-
}
198-
199-
#[test]
200-
fn test_parse_link_with_id() {
201-
let parser = Parser::new();
202-
let result = parser.parse("(5: 1 2)").unwrap();
203-
assert_eq!(result.len(), 1);
204-
assert_eq!(result[0].id, Some("5".to_string()));
205-
assert_eq!(result[0].values_count(), 2);
206-
}
207-
208-
#[test]
209-
fn test_parse_variable() {
210-
let parser = Parser::new();
211-
let result = parser.parse("($var 1 2)").unwrap();
212-
assert_eq!(result.len(), 1);
213-
assert!(result[0].values.as_ref().unwrap()[0].is_variable());
214-
}
215-
216-
#[test]
217-
fn test_parse_wildcard() {
218-
let parser = Parser::new();
219-
let result = parser.parse("(* 1)").unwrap();
220-
assert_eq!(result.len(), 1);
221-
assert!(result[0].values.as_ref().unwrap()[0].is_wildcard());
222-
}
223-
224-
#[test]
225-
fn test_parse_query_format() {
226-
let parser = Parser::new();
227-
// Query format: (( restriction ) ( substitution ))
228-
let result = parser.parse("(((1 2)) ((3 4)))").unwrap();
229-
assert_eq!(result.len(), 1);
230-
assert_eq!(result[0].values_count(), 2);
231-
}
232-
}

0 commit comments

Comments
 (0)