<commit_before>package parse

import "testing"

func TestModule1(t *testing.T) {
	for _, str := range []string{"", "()", "(foo bar)"} {
		result, err := newState(str).module()()

		if err == nil {
			t.Log(result)
		} else {
			t.Error(err.Error())
		}
	}
}

func TestXFailModule(t *testing.T) {
	for _, str := range []string{"(", "(()"} {
		result, err := newState(str).module()()

		if err == nil {
			t.Error(result)
		} else {
			t.Log(err.Error())
		}
	}
}

func TestAtom(t *testing.T) {
	s := newState("ident")
	result, err := s.Exhaust(s.atom())()

	if err != nil {
		t.Error(err.Error())
	} else {
		t.Logf("%#v", result)
	}
}

func TestStringLiteral(t *testing.T) {
	for _, str := range []string{`""`, `"sl"`, "\"   string literal  \n \""} {
		s := newState(str)
		result, err := s.Exhaust(s.stringLiteral())()

		if err != nil {
			t.Error(err.Error())
		} else {
			t.Logf("%#v", result)
		}
	}
}

func TestStrip(t *testing.T) {
	s := newState("  ident  ")
	result, err := s.Exhaust(s.strip(s.atom()))()

	if err != nil {
		t.Error(err.Error())
	} else {
		t.Logf("%#v", result)
	}
}

func TestWrapChars(t *testing.T) {
	s := newState(" ; laskdfjsl \t  dkjf\n ( \tident \n)  ")
	result, err := s.Exhaust(s.wrapChars('(', s.atom(), ')'))()

	if err != nil {
		t.Error(err.Error())
	} else {
		t.Logf("%#v", result)
	}
}

func TestList(t *testing.T) {
	s := newState("()")
	result, err := s.Exhaust(s.list())()

	if err != nil {
		t.Error(err.Error())
	}

	t.Logf("%#v", result)
}

// func TestElem(t *testing.T) {
// 	for _, str := range []string{"ident", "  ident  "} {
// 		t.Logf("source: %#v", str)

// 		s := newState(str)
// 		result, err := s.elem()()

// 		if err != nil {
// 			t.Error(err.Error())
// 		} else {
// 			t.Logf("%#v", toString(result))
// 		}
// 	}
// }

func TestBlank(t *testing.T) {
	for _, str := range []string{"", "   ", "\t", "\n\n", " ; laskdjf \n \t "} {
		s := newState(str)
		result, err := s.Exhaust(s.blank())()

		t.Log(result, err)

		if result != nil {
			t.Errorf("`result` should be nil. (%#v)", result)
		}

		if err != nil {
			t.Errorf("`err` should be nil. (%#v)", result)
		}
	}
}<commit_msg>Test elem<commit_after>package parse

import "testing"

func TestModule1(t *testing.T) {
	for _, str := range []string{"", "()", "(foo bar)"} {
		result, err := newState(str).module()()

		if err == nil {
			t.Log(result)
		} else {
			t.Error(err.Error())
		}
	}
}

func TestXFailModule(t *testing.T) {
	for _, str := range []string{"(", "(()"} {
		result, err := newState(str).module()()

		if err == nil {
			t.Error(result)
		} else {
			t.Log(err.Error())
		}
	}
}

func TestAtom(t *testing.T) {
	s := newState("ident")
	result, err := s.Exhaust(s.atom())()

	if err != nil {
		t.Error(err.Error())
	} else {
		t.Logf("%#v", result)
	}
}

func TestStringLiteral(t *testing.T) {
	for _, str := range []string{`""`, `"sl"`, "\"   string literal  \n \""} {
		s := newState(str)
		result, err := s.Exhaust(s.stringLiteral())()

		if err != nil {
			t.Error(err.Error())
		} else {
			t.Logf("%#v", result)
		}
	}
}

func TestStrip(t *testing.T) {
	s := newState("  ident  ")
	result, err := s.Exhaust(s.strip(s.atom()))()

	if err != nil {
		t.Error(err.Error())
	} else {
		t.Logf("%#v", result)
	}
}

func TestWrapChars(t *testing.T) {
	s := newState(" ; laskdfjsl \t  dkjf\n ( \tident \n)  ")
	result, err := s.Exhaust(s.wrapChars('(', s.atom(), ')'))()

	if err != nil {
		t.Error(err.Error())
	} else {
		t.Logf("%#v", result)
	}
}

func TestList(t *testing.T) {
	s := newState("()")
	result, err := s.Exhaust(s.list())()

	if err != nil {
		t.Error(err.Error())
	}

	t.Logf("%#v", result)
}

func TestElem(t *testing.T) {
	strs := []string{
		"ident",
		"  ident  ",
		" (foo ; (this is) comment \n bar)  \t ; lsdfj\n ",
	}

	for _, str := range strs {
		t.Logf("source: %#v", str)

		s := newState(str)
		result, err := s.Exhaust(s.elem())()

		if err == nil {
			t.Logf("%#v", result)
		} else {
			t.Error(err.Error())
		}
	}
}

func TestBlank(t *testing.T) {
	for _, str := range []string{"", "   ", "\t", "\n\n", " ; laskdjf \n \t "} {
		s := newState(str)
		result, err := s.Exhaust(s.blank())()

		t.Log(result, err)

		if result != nil {
			t.Errorf("`result` should be nil. (%#v)", result)
		}

		if err != nil {
			t.Errorf("`err` should be nil. (%#v)", result)
		}
	}
}
{'fraction_non_alphanumeric': 0.24769372693726938, 'fraction_numerical': 0.00046125461254612545, 'mean_word_length': 2.855111111111111, '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': '2616548', 'n_tokens_mistral': 2001, 'n_tokens_neox': 1862, 'n_words': 386}