Skip to content

Commit

Permalink
#221 unit tests for RtYamlScalarBuilder.buildPlainScalar()
Browse files Browse the repository at this point in the history
  • Loading branch information
amihaiemil committed Mar 24, 2020
1 parent e57e838 commit 08c763c
Show file tree
Hide file tree
Showing 4 changed files with 124 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
* This class is immutable and thread-safe.
* @author Mihai Andronache (amihaiemil@gmail.com)
* @version $Id$
* @since 3.2.0
* @since 4.0.0
* @todo #221:30min Finish the implementation of the methods in this interface.
* Figure out how to implement literal and built block scalars, also in the
* the context of indenting/printing a bigger YAML node, as well as printing
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/amihaiemil/eoyaml/YamlScalarBuilder.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
* Builder of Yaml Scalar. Implementations should be immutable and thread-safe.
* @author Mihai Andronache (amihaiemil@gmail.com)
* @version $Id$
* @since 3.2.0
* @since 4.0.0
*/
public interface YamlScalarBuilder {

Expand Down
112 changes: 112 additions & 0 deletions src/test/java/com/amihaiemil/eoyaml/RtYamlScalarBuilderTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
/**
* Copyright (c) 2016-2020, Mihai Emil Andronache
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
package com.amihaiemil.eoyaml;

import org.hamcrest.MatcherAssert;
import org.hamcrest.Matchers;
import org.junit.Test;

/**
* Unit tests for {@link RtYamlScalarBuilder}.
* @author Mihai Andronache (amihaiemil@gmail.com)
* @version $Id$
* @since 4.0.0
*/
public final class RtYamlScalarBuilderTest {

/**
* RtYamlScalarBuilder can add line of text.
*/
@Test
public void addsLineOfText() {
final YamlScalarBuilder scalarBuilder = new RtYamlScalarBuilder();
final YamlScalarBuilder withAdded = scalarBuilder.addLine("a scalar");
MatcherAssert.assertThat(withAdded, Matchers.notNullValue());
MatcherAssert.assertThat(
scalarBuilder, Matchers.not(Matchers.is(withAdded))
);
}

/**
* RtYamlScalarBuilder can build a plain scalar with no newlines.
* @checkstyle LineLength (30 lines)
*/
@Test
public void buildsPlainScalarNoNewLines() {
final Scalar scalar = new RtYamlScalarBuilder()
.addLine("a plain scalar")
.addLine("that will be on the same line")
.buildPlainScalar();
MatcherAssert.assertThat(
scalar.value(), Matchers.equalTo("a plain scalar that will be on the same line")
);
}

/**
* RtYamlScalarBuilder can build a plain scalar, while removing
* the hardcoded newlines.
* @checkstyle LineLength (30 lines)
*/
@Test
public void buildsPlainScalarRemovesAddedNewLines() {
final Scalar scalar = new RtYamlScalarBuilder()
.addLine("a plain scalar")
.addLine("that will be" + System.lineSeparator() + "on the same line.")
.addLine("You cannot trick it.")
.buildPlainScalar();
MatcherAssert.assertThat(
scalar.value(),
Matchers.equalTo("a plain scalar that will be on the same line. You cannot trick it.")
);
}

/**
* RtYamlScalarBuilder can build on a single line of text.
*/
@Test
public void buildsSingleLinePlainScalar() {
final Scalar scalar = new RtYamlScalarBuilder()
.addLine("value").buildPlainScalar();
MatcherAssert.assertThat(
scalar.value(),
Matchers.equalTo("value")
);
}

/**
* RtYamlScalarBuilder can build an empty plain scalar.
*/
@Test
public void buildsEmptyPlainScalar() {
final Scalar scalar = new RtYamlScalarBuilder().buildPlainScalar();
MatcherAssert.assertThat(
scalar.value(),
Matchers.isEmptyString()
);
}
}
10 changes: 10 additions & 0 deletions src/test/java/com/amihaiemil/eoyaml/YamlTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,16 @@ public void createsYamlSequenceBuilder() {
);
}

/**
* Yaml can create a YamlScalarBuilder.
*/
@Test
public void createsYamlScalarBuilder() {
MatcherAssert.assertThat(
Yaml.createYamlScalarBuilder(), Matchers.notNullValue()
);
}

/**
* Yaml can create a YamlStreamBuilder.
*/
Expand Down

1 comment on commit 08c763c

@0pdd
Copy link

@0pdd 0pdd commented on 08c763c Mar 24, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Puzzle 221-2724374d discovered in src/main/java/com/amihaiemil/eoyaml/RtYamlScalarBuilder.java and submitted as #227. Please, remember that the puzzle was not necessarily added in this particular commit. Maybe it was added earlier, but we discovered it only now.

Please sign in to comment.