<commit_before>package jfdi.test.ui;

import javafx.collections.ObservableList;
import jfdi.ui.Constants;

public class TestUnmark extends UiTest {

    public TestUnmark(TestMain main) {
        super(main);
    }

    @Override
    void run() {
        main.addRandomTasks(3);
        main.execute("mark 1-3");
        testUnmarkSingle();
        testUnmarkMultiple();
        testUnmarkNonExistent();
    }

    private void testUnmarkSingle() {
        main.execute("unmark 1");
        assertUnmarked(1);
    }

    private void testUnmarkMultiple() {
        main.execute("unmark 2,3");
        assertUnmarked(2, 3);
    }

    private void testUnmarkNonExistent() {<commit_msg>Cover unmark handler fully<commit_after>package jfdi.test.ui;

import javafx.collections.ObservableList;
import jfdi.ui.Constants;

public class TestUnmark extends UiTest {

    public TestUnmark(TestMain main) {
        super(main);
    }

    @Override
    void run() {
        main.addRandomTasks(3);
        main.execute("mark 1-3");
        testUnmarkSingle();
        testUnmarkMultiple();
        testUnmarkNonExistent();
    }

    private void testUnmarkSingle() {
        main.execute("unmark 1");
        assertUnmarked(1);
    }

    private void testUnmarkMultiple() {
        main.execute("unmark 2,3");
        assertUnmarked(2, 3);
        
        main.execute("mark 1-3");
        
        main.execute("unmark 1-3");
        assertUnmarked(1, 2, 3);
    }

    private void testUnmarkNonExistent() {
{'fraction_non_alphanumeric': 0.11384820239680427, 'fraction_numerical': 0.016644474034620507, 'mean_word_length': 2.4872389791183296, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '121826', 'n_tokens_mistral': 488, 'n_tokens_neox': 459, 'n_words': 90}