Coverage for tdom / placeholders_test.py: 100%

41 statements  

« prev     ^ index     » next       coverage.py v7.13.0, created at 2026-01-12 16:43 +0000

1import pytest 

2 

3from .placeholders import ( 

4 make_placeholder_config, 

5 PlaceholderState, 

6) 

7 

8 

9def test_make_placeholder() -> None: 

10 config = make_placeholder_config() 

11 assert config.make_placeholder(0) == f"{config.prefix}0{config.suffix}" 

12 assert config.make_placeholder(42) == f"{config.prefix}42{config.suffix}" 

13 

14 

15def test_match_placeholders() -> None: 

16 config = make_placeholder_config() 

17 s = f"Start {config.prefix}0{config.suffix} middle {config.prefix}1{config.suffix} end" 

18 matches = config.match_placeholders(s) 

19 assert len(matches) == 2 

20 assert matches[0].group(0) == f"{config.prefix}0{config.suffix}" 

21 assert matches[0][1] == "0" 

22 assert matches[1].group(0) == f"{config.prefix}1{config.suffix}" 

23 assert matches[1][1] == "1" 

24 

25 

26def test_find_placeholders() -> None: 

27 config = make_placeholder_config() 

28 s = f"Hello {config.prefix}0{config.suffix}, today is {config.prefix}1{config.suffix}." 

29 pt = config.find_placeholders(s) 

30 assert pt.strings == ("Hello ", ", today is ", ".") 

31 assert pt.i_indexes == (0, 1) 

32 

33 literal_s = "No placeholders here." 

34 literal_pt = config.find_placeholders(literal_s) 

35 assert literal_pt.strings == (literal_s,) 

36 assert literal_pt.i_indexes == () 

37 

38 

39def test_placeholder_state() -> None: 

40 config = make_placeholder_config() 

41 state = PlaceholderState(config=config) 

42 assert state.is_empty 

43 

44 p0 = state.add_placeholder(0) 

45 assert p0 == config.make_placeholder(0) 

46 assert not state.is_empty 

47 

48 p1 = state.add_placeholder(1) 

49 assert p1 == config.make_placeholder(1) 

50 

51 text = f"Values: {p0}, {p1}" 

52 pt = state.remove_placeholders(text) 

53 assert pt.strings == ("Values: ", ", ", "") 

54 assert pt.i_indexes == (0, 1) 

55 assert state.is_empty 

56 

57 with pytest.raises(ValueError): 

58 state.remove_placeholders(f"Unknown placeholder: {config.make_placeholder(2)}")