mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-07-17 05:07:23 +08:00
97 lines
2.9 KiB
Go
97 lines
2.9 KiB
Go
//
|
||
// Copyright 2026 The InfiniFlow Authors. All Rights Reserved.
|
||
//
|
||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||
// you may not use this file except in compliance with the License.
|
||
// You may obtain a copy of the License at
|
||
//
|
||
// http://www.apache.org/licenses/LICENSE-2.0
|
||
//
|
||
// Unless required by applicable law or agreed to in writing, software
|
||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
// See the License for the specific language governing permissions and
|
||
// limitations under the License.
|
||
//
|
||
|
||
package utility
|
||
|
||
import "testing"
|
||
|
||
// SplitKeywords - Python task_executor.run_dataflow:879
|
||
// re.split(r"[,,;;、\r\n]+", keywords) with empty filtering.
|
||
|
||
func TestSplitKeywords_Comma(t *testing.T) {
|
||
result := SplitKeywords("kw1,kw2,kw3")
|
||
if len(result) != 3 {
|
||
t.Fatalf("len = %d, want 3", len(result))
|
||
}
|
||
}
|
||
|
||
func TestSplitKeywords_ChineseComma(t *testing.T) {
|
||
result := SplitKeywords("kw1,kw2,kw3")
|
||
if len(result) != 3 {
|
||
t.Fatalf("len = %d, want 3", len(result))
|
||
}
|
||
}
|
||
|
||
func TestSplitKeywords_MixedDelimiters(t *testing.T) {
|
||
result := SplitKeywords("kw1,kw2;kw3")
|
||
if len(result) != 3 {
|
||
t.Fatalf("len = %d, want 3, got %v", len(result), result)
|
||
}
|
||
}
|
||
|
||
func TestSplitKeywords_FiltersEmptyStrings(t *testing.T) {
|
||
result := SplitKeywords("kw1,,kw2")
|
||
if len(result) != 2 {
|
||
t.Errorf("empty strings should be filtered: got %v", result)
|
||
}
|
||
}
|
||
|
||
func TestSplitKeywords_Empty(t *testing.T) {
|
||
result := SplitKeywords("")
|
||
if len(result) != 0 {
|
||
t.Errorf("got %v, want empty", result)
|
||
}
|
||
}
|
||
|
||
// SplitQuestions - splits by newline only, dropping empty lines.
|
||
|
||
func TestSplitQuestions_MultipleLines(t *testing.T) {
|
||
result := SplitQuestions("Q1\nQ2\nQ3")
|
||
if len(result) != 3 || result[0] != "Q1" || result[2] != "Q3" {
|
||
t.Fatalf("got %v, want [Q1 Q2 Q3]", result)
|
||
}
|
||
}
|
||
|
||
func TestSplitQuestions_Empty(t *testing.T) {
|
||
if result := SplitQuestions(""); result != nil {
|
||
t.Errorf("got %v, want nil", result)
|
||
}
|
||
}
|
||
|
||
func TestSplitQuestions_TrailingNewlineDropped(t *testing.T) {
|
||
// "Q1\n" would yield ["Q1", ""] with a plain split; the trailing empty
|
||
// must be filtered so the index is not seeded with a spurious [""].
|
||
result := SplitQuestions("Q1\n")
|
||
if len(result) != 1 || result[0] != "Q1" {
|
||
t.Fatalf("got %v, want [Q1]", result)
|
||
}
|
||
}
|
||
|
||
func TestSplitQuestions_BlankLinesDropped(t *testing.T) {
|
||
result := SplitQuestions("Q1\n\nQ2")
|
||
if len(result) != 2 || result[0] != "Q1" || result[1] != "Q2" {
|
||
t.Fatalf("got %v, want [Q1 Q2]", result)
|
||
}
|
||
}
|
||
|
||
func TestSplitQuestions_PreservesCommas(t *testing.T) {
|
||
// Unlike SplitKeywords, questions must NOT split on commas.
|
||
result := SplitQuestions("请问A,B和C有何区别?")
|
||
if len(result) != 1 || result[0] != "请问A,B和C有何区别?" {
|
||
t.Fatalf("got %v, want single element preserving comma", result)
|
||
}
|
||
}
|