import pytest
from src.models import FileItem
from src.fuzzy_anchor import FuzzyAnchor

def test_add_slice_with_annotations():
 f_item = FileItem(path="test.py")
 content = "line1\nline2\nline3\nline4\nline5"
 
 # Simulate adding a slice from GUI
 s_line, e_line = 2, 4
 slice_data = FuzzyAnchor.create_slice(content, s_line, e_line)
 slice_data['tag'] = "important"
 slice_data['comment'] = "this is a test"
 
 f_item.custom_slices.append(slice_data)
 
 # Verify it's in the list
 assert len(f_item.custom_slices) == 1
 assert f_item.custom_slices[0]['tag'] == "important"
 assert f_item.custom_slices[0]['comment'] == "this is a test"
 
 # Verify serialization
 d = f_item.to_dict()
 assert d['custom_slices'][0]['tag'] == "important"
 
 # Verify deserialization
 f_item_2 = FileItem.from_dict(d)
 assert f_item_2.custom_slices[0]['comment'] == "this is a test"
