Improve support for running tests on windows

Signed-off-by: szarpul@users.noreply.github.com
Signed-off-by: Mark Pollack <mark.pollack@broadcom.com>
This commit is contained in:
Mark Pollack
2025-05-08 12:46:06 -04:00
committed by Soby Chacko
parent 9774b4eedc
commit 06ea88312a
4 changed files with 182 additions and 69 deletions

View File

@@ -25,14 +25,14 @@ import static org.assertj.core.api.Assertions.assertThat;
/**
* @author Christian Tzolov
*/
public class ContentFormatterTests {
class ContentFormatterTests {
Document document = new Document("The World is Big and Salvation Lurks Around the Corner",
Map.of("embedKey1", "value1", "embedKey2", "value2", "embedKey3", "value3", "llmKey2", "value4"));
@Test
public void noExplicitlySetFormatter() {
assertThat(this.document.getText()).isEqualTo("""
void noExplicitlySetFormatter() {
TextBlockAssertion.assertThat(this.document.getText()).isEqualTo("""
The World is Big and Salvation Lurks Around the Corner""");
assertThat(this.document.getFormattedContent()).isEqualTo(this.document.getFormattedContent(MetadataMode.ALL));
@@ -42,17 +42,18 @@ public class ContentFormatterTests {
}
@Test
public void defaultConfigTextFormatter() {
void defaultConfigTextFormatter() {
DefaultContentFormatter defaultConfigFormatter = DefaultContentFormatter.defaultConfig();
assertThat(this.document.getFormattedContent(defaultConfigFormatter, MetadataMode.ALL)).isEqualTo("""
llmKey2: value4
embedKey1: value1
embedKey2: value2
embedKey3: value3
TextBlockAssertion.assertThat(this.document.getFormattedContent(defaultConfigFormatter, MetadataMode.ALL))
.isEqualTo("""
llmKey2: value4
embedKey1: value1
embedKey2: value2
embedKey3: value3
The World is Big and Salvation Lurks Around the Corner""");
The World is Big and Salvation Lurks Around the Corner""");
assertThat(this.document.getFormattedContent(defaultConfigFormatter, MetadataMode.ALL))
.isEqualTo(this.document.getFormattedContent());

View File

@@ -0,0 +1,54 @@
/*
* Copyright 2024-2025 the original author or authors.
*
* 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
*
* https://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 org.springframework.ai.document;
import java.util.Arrays;
import org.assertj.core.api.AbstractCharSequenceAssert;
import org.assertj.core.api.Assertions;
public class TextBlockAssertion extends AbstractCharSequenceAssert<TextBlockAssertion, String> {
protected TextBlockAssertion(String string) {
super(string, TextBlockAssertion.class);
}
public static TextBlockAssertion assertThat(String actual) {
return new TextBlockAssertion(actual);
}
@Override
public TextBlockAssertion isEqualTo(Object expected) {
Assertions.assertThat(normalizedEOL(actual)).isEqualTo(normalizedEOL((String) expected));
return this;
}
@Override
public TextBlockAssertion contains(CharSequence... values) {
Assertions.assertThat(normalizedEOL(actual)).contains(normalizedEOL(values));
return this;
}
private String normalizedEOL(CharSequence... values) {
return Arrays.stream(values).map(CharSequence::toString).map(this::normalizedEOL).reduce("", (a, b) -> a + b);
}
private String normalizedEOL(String line) {
return line.replaceAll("\r\n|\r|\n", System.lineSeparator());
}
}