Skip to content

Commit

Permalink
Use the .cpp extension for C++20 languages (#75)
Browse files Browse the repository at this point in the history
This change prevents compilation errors for C++20.
  • Loading branch information
lhchavez authored Feb 22, 2022
1 parent d7d810f commit 3fd251a
Show file tree
Hide file tree
Showing 2 changed files with 130 additions and 1 deletion.
2 changes: 1 addition & 1 deletion common/literalinput.go
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ func validateInterface(interfaceName string) error {
// LanguageFileExtension returns the file extension for a particular language.
func LanguageFileExtension(language string) string {
switch language {
case "cpp11", "cpp11-gcc", "cpp11-clang", "cpp17-gcc", "cpp17-clang":
case "cpp11", "cpp11-gcc", "cpp11-clang", "cpp17-gcc", "cpp17-clang", "cpp20-gcc", "cpp20-clang":
return "cpp"
case "c", "c11-gcc", "c11-clang":
return "c"
Expand Down
129 changes: 129 additions & 0 deletions runner/runner_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -360,6 +360,32 @@ func TestGrade(t *testing.T) {
"1.1": {runOutput: programOutput{"3", "", &RunMetadata{Verdict: "OK"}}},
},
},
{
"cpp20-gcc",
"#include <iostream>\nint main() { std::cout << \"3\\n\"; }",
big.NewRat(1, 1),
"PA",
big.NewRat(1, 4),
expectedResult{runOutput: programOutput{"", "", &RunMetadata{Verdict: "OK"}}},
map[string]expectedResult{
"0": {runOutput: programOutput{"3", "", &RunMetadata{Verdict: "OK"}}},
"1.0": {runOutput: programOutput{"3", "", &RunMetadata{Verdict: "OK"}}},
"1.1": {runOutput: programOutput{"3", "", &RunMetadata{Verdict: "OK"}}},
},
},
{
"cpp20-clang",
"#include <iostream>\nint main() { std::cout << \"3\\n\"; }",
big.NewRat(1, 1),
"PA",
big.NewRat(1, 4),
expectedResult{runOutput: programOutput{"", "", &RunMetadata{Verdict: "OK"}}},
map[string]expectedResult{
"0": {runOutput: programOutput{"3", "", &RunMetadata{Verdict: "OK"}}},
"1.0": {runOutput: programOutput{"3", "", &RunMetadata{Verdict: "OK"}}},
"1.1": {runOutput: programOutput{"3", "", &RunMetadata{Verdict: "OK"}}},
},
},
{
"rb",
"puts 3",
Expand Down Expand Up @@ -571,6 +597,109 @@ func TestGrade(t *testing.T) {
},
map[string]expectedResult{},
},
{
"kt",
`fun main() {
val (a, b) = readLine()!!.split(' ').map(String::toInt)
println(a + b)
}`,
big.NewRat(1, 1),
"AC",
big.NewRat(1, 1),
expectedResult{runOutput: programOutput{"", "", &RunMetadata{Verdict: "OK"}}},
map[string]expectedResult{
"0": {runOutput: programOutput{"3", "", &RunMetadata{Verdict: "OK"}}},
"1.0": {runOutput: programOutput{"3", "", &RunMetadata{Verdict: "OK"}}},
"1.1": {runOutput: programOutput{"5", "", &RunMetadata{Verdict: "OK"}}},
},
},
{
"go",
`package main
import (
"bufio"
"fmt"
"os"
"strconv"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Split(bufio.ScanWords)
var sum int64
for scanner.Scan() {
v, err := strconv.ParseInt(scanner.Text(), 10, 64)
if err != nil {
panic(err)
}
sum += v
}
fmt.Println(sum)
}`,
big.NewRat(1, 1),
"AC",
big.NewRat(1, 1),
expectedResult{runOutput: programOutput{"", "", &RunMetadata{Verdict: "OK"}}},
map[string]expectedResult{
"0": {runOutput: programOutput{"3", "", &RunMetadata{Verdict: "OK"}}},
"1.0": {runOutput: programOutput{"3", "", &RunMetadata{Verdict: "OK"}}},
"1.1": {runOutput: programOutput{"5", "", &RunMetadata{Verdict: "OK"}}},
},
},
{
"rs",
`use std::io;
fn main() -> io::Result<()> {
let mut line = String::new();
io::stdin().read_line(&mut line)?;
let mut sum: i64 = 0;
for s in line.trim().split(" ") {
sum += i64::from_str_radix(s, 10).unwrap();
}
println!("{}", sum);
Ok(())
}`,
big.NewRat(1, 1),
"AC",
big.NewRat(1, 1),
expectedResult{runOutput: programOutput{"", "", &RunMetadata{Verdict: "OK"}}},
map[string]expectedResult{
"0": {runOutput: programOutput{"3", "", &RunMetadata{Verdict: "OK"}}},
"1.0": {runOutput: programOutput{"3", "", &RunMetadata{Verdict: "OK"}}},
"1.1": {runOutput: programOutput{"5", "", &RunMetadata{Verdict: "OK"}}},
},
},
{
"js",
`const readline = require("node:readline");
const rl = readline.createInterface({
input: process.stdin,
});
rl.on("line", (input) => {
console.log(
input
.trim()
.split(" ")
.map((x) => parseInt(x))
.reduce((acc, x) => acc + x, 0)
);
});`,
big.NewRat(1, 1),
"AC",
big.NewRat(1, 1),
expectedResult{runOutput: programOutput{"", "", &RunMetadata{Verdict: "OK"}}},
map[string]expectedResult{
"0": {runOutput: programOutput{"3", "", &RunMetadata{Verdict: "OK"}}},
"1.0": {runOutput: programOutput{"3", "", &RunMetadata{Verdict: "OK"}}},
"1.1": {runOutput: programOutput{"5", "", &RunMetadata{Verdict: "OK"}}},
},
},
}
for idx, rte := range runtests {
t.Run(fmt.Sprintf("%s/%d/%s %s", wrapper.name(), idx, rte.language, rte.expectedVerdict), func(t *testing.T) {
Expand Down

0 comments on commit 3fd251a

Please sign in to comment.