package main
import junit.framework.TestCase.assertEquals
import junit.framework.TestCase.assertTrue
import org.junit.Test
import java.io.ByteArrayOutputStream
import java.io.File
import java.io.PrintStream
class ParserTest {
@Test
fun testDelStrings() {
val input = "This is a \"sample\"string."
val output = delStrings(input)
assertEquals("This is a string.", output)
}
@Test
fun testTakeOnlyJs() {
val fileToTest = "src/test/resources/FileWithScript.html"
val expectedJsCode = File("src/test/resources/OnlyTheScript.txt").readText().trimIndent().replace("\\s+".toRegex(), " ")
val output = takeOnlyJs(fileToTest).trimIndent().replace("\\s+".toRegex(), " ")
assertEquals(expectedJsCode, output)
}
@Test
fun testJsWords() {
// Assume you have a sample code map
val codeMap = mapOf("word1" to 2, "word2" to 3, "javascript" to 5)
val output = jsWords(codeMap)
// Assert the expected output based on the filtering logic
assertEquals(mapOf("word1" to 2, "word2" to 3, "javascript" to 5), output)
}
@Test
fun testSplitLanguages() {
// Assume you have a sample HTML file with "))
assertTrue(actualHtmlCode.contains(""))
}
@Test
fun testParser() {
// Assume you have a sample HTML file for testing
val puissance4File = "src/test/resources/puissance4.html"
// Call the parser function
parserJS(puissance4File)
// Verify the output by capturing the printed content
val printedContent = captureStandardOutput {
parserJS(puissance4File)
}
// Assert the expected output based on the content of your sample HTML file
val expectedOutput =File("src/test/resources/ExpectedParsingResult.txt").readText().trimIndent()
assertEquals(expectedOutput, printedContent.trimIndent())
}
// Function to capture standard output
private fun captureStandardOutput(block: () -> Unit): String {
val standardOut = System.out
val outputStream = ByteArrayOutputStream()
System.setOut(PrintStream(outputStream))
try {
block()
} finally {
System.setOut(standardOut)
}
return outputStream.toString().trim()
}
}