From 1d42143d842852d6580f67e655335d6ba123c584 Mon Sep 17 00:00:00 2001 From: Bor-Yuh Evan Chang Date: Sat, 7 Sep 2024 14:40:15 -0600 Subject: [PATCH] Simplify and remove unnecessary files for the assignment (#7) * Remove `main` interpreter runner We remove the top-level main because we really only need testing. * Remove autograding workflow * Remove autograding workflow * Update build and .gitignore * Remove grader and util files * Remover file-based tester * Standardize locations to **/jsy/lab1 * Clean up student files - Remove extra interfaces - Remove external test files - Add more comments * Add .scalafmt.conf * Update build.sbt --- .github/workflows/autograding.yml | 56 ---- .github/workflows/sbt-test.yml | 2 - .gitignore | 24 +- .scalafmt.conf | 2 + build.sbt | 11 +- lab1.pdf | Bin 224317 -> 0 bytes lab1.sh | 6 - node/jsy.js | 44 --- project/build.properties | 2 +- src/main/scala/jsy/lab1/Lab1.scala | 109 ++++++++ src/main/scala/jsy/lab1/Lab1.worksheet.sc | 76 +++++ src/main/scala/jsy/lab1/Lab1Like.scala | 27 -- src/main/scala/jsy/lab1/Parser.scala | 38 ++- src/main/scala/jsy/lab1/ast.scala | 10 +- src/main/scala/jsy/student/Lab1.scala | 131 --------- src/main/scala/jsy/student/Lab1.worksheet.sc | 64 ----- src/main/scala/jsy/util/DoWith.scala | 33 --- src/main/scala/jsy/util/DoWithContext.scala | 31 --- src/main/scala/jsy/util/JsyApplication.scala | 93 ------- src/main/scala/jsy/util/Visitor.scala | 32 --- src/main/scala/jsy/util/VisitorWorksheet.sc | 24 -- src/main/scala/jsy/util/options.scala | 101 ------- src/test/scala/jsy/grader/Inginious.scala | 73 ----- src/test/scala/jsy/lab1/Lab1Spec.scala | 239 ++++++++++++++++ src/test/scala/jsy/student/Lab1Spec.scala | 263 ------------------ .../scala/jsy/tester/JavascriptyTester.scala | 27 -- testlab1.sh | 7 - 27 files changed, 475 insertions(+), 1050 deletions(-) delete mode 100644 .github/workflows/autograding.yml create mode 100644 .scalafmt.conf delete mode 100644 lab1.pdf delete mode 100755 lab1.sh delete mode 100644 node/jsy.js create mode 100644 src/main/scala/jsy/lab1/Lab1.scala create mode 100644 src/main/scala/jsy/lab1/Lab1.worksheet.sc delete mode 100644 src/main/scala/jsy/lab1/Lab1Like.scala delete mode 100644 src/main/scala/jsy/student/Lab1.scala delete mode 100644 src/main/scala/jsy/student/Lab1.worksheet.sc delete mode 100644 src/main/scala/jsy/util/DoWith.scala delete mode 100644 src/main/scala/jsy/util/DoWithContext.scala delete mode 100644 src/main/scala/jsy/util/JsyApplication.scala delete mode 100644 src/main/scala/jsy/util/Visitor.scala delete mode 100644 src/main/scala/jsy/util/VisitorWorksheet.sc delete mode 100644 src/main/scala/jsy/util/options.scala delete mode 100644 src/test/scala/jsy/grader/Inginious.scala create mode 100644 src/test/scala/jsy/lab1/Lab1Spec.scala delete mode 100644 src/test/scala/jsy/student/Lab1Spec.scala delete mode 100644 src/test/scala/jsy/tester/JavascriptyTester.scala delete mode 100755 testlab1.sh diff --git a/.github/workflows/autograding.yml b/.github/workflows/autograding.yml deleted file mode 100644 index 1f39063..0000000 --- a/.github/workflows/autograding.yml +++ /dev/null @@ -1,56 +0,0 @@ -# This is a basic workflow to help you get started with Actions - -name: Autograding - -# Controls when the workflow will run -on: - # Triggers the workflow on push or pull request events but only for the "main" branch - - pull_request: - branches: [ "feedback", "main"] - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -# A workflow run is made up of one or more jobs that can run sequentially or in parallel -jobs: - # This workflow contains a single job called "build" - build: - # The type of runner that the job will run on - runs-on: ubuntu-latest - - steps: - # Get Student Repo - - name: Student Repo - uses: actions/checkout@v3 - with: - path: student_code - - # Get Grading Repo - - name: Master Repo - uses: actions/checkout@v3 - with: - token: ${{secrets.F22_3155_PAT}} - repository: csci3155/pppl-labdev - path: master_code - - # Prep grading repo - - name: Prep Grading - run: ./gradepreplab1.sh . - working-directory: ./master_code - - # Grade the current - - name: Grade current - run: ./gradelab1.sh ../student_code . ../ 2>&1 | tee ../grading.log - working-directory: ./master_code - timeout-minutes: 10 - - # Display the score - - name: Display Score - run: tail -n 1 grading.log - - - name: Upload Grading Log - uses: actions/upload-artifact@v3 - with: - name: grading.log - path: grading.log diff --git a/.github/workflows/sbt-test.yml b/.github/workflows/sbt-test.yml index c132024..811f9ac 100644 --- a/.github/workflows/sbt-test.yml +++ b/.github/workflows/sbt-test.yml @@ -1,5 +1,3 @@ -# This is a basic workflow to help you get started with Actions - name: sbt test # Controls when the workflow will run diff --git a/.gitignore b/.gitignore index 490ffed..bb575bc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,24 @@ -.idea +# sbt target/ -project/target/ -project/project/ +project/target/* +project/project/* .ivy2 .sbt + +# Intellj +.idea + +# VS Code +.vscode + +# Metals +.metals +.bloop +metals.sbt +.bsp + +# Ammonite +.ammonite + +# macOS +.DS_Store diff --git a/.scalafmt.conf b/.scalafmt.conf new file mode 100644 index 0000000..ee7753a --- /dev/null +++ b/.scalafmt.conf @@ -0,0 +1,2 @@ +version = "3.7.15" +runner.dialect = scala213 \ No newline at end of file diff --git a/build.sbt b/build.sbt index 97eabee..f39a933 100644 --- a/build.sbt +++ b/build.sbt @@ -2,9 +2,9 @@ name := "pppl-lab1" lazy val commonSettings = Seq( organization := "edu.colorado.cs", - version := "3.4.4", + version := "4.0.0", - scalaVersion := "2.13.6", + scalaVersion := "2.13.14", scalacOptions ++= Seq( "-unchecked", // Enable additional warnings where generated code depends on assumptions. "-feature", // Emit warning for features that should be imported explicitly @@ -14,12 +14,10 @@ lazy val commonSettings = Seq( "-Ywarn-extra-implicit", // more than one implicit parameter section is defined "-Xlint:nullary-unit", // nullary methods return Unit "-Xlint:inaccessible", // inaccessible types in method signatures - "-Xlint:nullary-override", // non-nullary def f() overrides nullary def f "-Xlint:infer-any", // a type argument is inferred to be Any "-Xlint:missing-interpolator", // literal appears to be missing an interpolator id "-Xlint:option-implicit", // apply used implicit view "-Xlint:package-object-classes", // object defined in package object - "-Xlint:unsound-match", // may not be typesafe "-Xlint:stars-align", // wildcard must align with sequence component "-Xlint:constant", // a constant arithmetic expression results in an error //"-Xfatal-warnings", // turn warnings into errors @@ -33,8 +31,9 @@ lazy val commonSettings = Seq( ), // set logging to show only errors during runs - logLevel in run := Level.Error, - logLevel in runMain := Level.Error, + logLevel / run := Level.Error, + logLevel / runMain := Level.Error, + Global / excludeLintKeys += logLevel, // JVM arguments: 8G heap size, 2M stack size //javaOptions in Test += "-Xmx8G -Xss2M", diff --git a/lab1.pdf b/lab1.pdf deleted file mode 100644 index ea4eb982edf4a54939ab188a283f34edfa2da540..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 224317 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≥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 diff --git a/lab1.sh b/lab1.sh deleted file mode 100755 index 6997597..0000000 --- a/lab1.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash - -SCRIPT_PATH=$(cd `dirname $0` && pwd) -cd ${SCRIPT_PATH} - -sbt "runMain jsy.student.Lab1 $@" diff --git a/node/jsy.js b/node/jsy.js deleted file mode 100644 index 74d6c1f..0000000 --- a/node/jsy.js +++ /dev/null @@ -1,44 +0,0 @@ -/* - * This is a wrapper that executes a jsy program as a js program using - * Node.js (Google's V8 JavaScript interpreter). - * - * To use it, install Node.js for your platform and then type on the - * command-line. - * - * node jsy.js program.jsy - * - * where program.jsy is your jsy test program file. - * - * Version History: - * 0.2 (09/23/2012): Changed printing of final value. - * 0.1 (09/13/2012): Initial release. - * - */ - -const jsy = { - print: console.log -}; - -const jsyprogram = (function () { - const node = process.argv[0] - const jsyjs = process.argv[1] - const usage = function () { - console.error("Usage: " + node + " " + jsyjs + " program.jsy"); - process.exit(1); - }; - - if (process.argv.length !== 3) { - usage(); - } - - const fs = require('fs'); - const filename = process.argv[2]; - return fs.readFileSync(filename, 'utf8'); -})(); - -const jsytojs = function (jsyprogram) { - return jsyprogram; -}; - -const jsyvalue = eval(jsytojs(jsyprogram)); -console.log(jsyvalue) diff --git a/project/build.properties b/project/build.properties index 19479ba..ee4c672 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=1.5.2 +sbt.version=1.10.1 diff --git a/src/main/scala/jsy/lab1/Lab1.scala b/src/main/scala/jsy/lab1/Lab1.scala new file mode 100644 index 0000000..0ab87ba --- /dev/null +++ b/src/main/scala/jsy/lab1/Lab1.scala @@ -0,0 +1,109 @@ +package jsy.lab1 + +object Lab1 { + /* + * CSCI 3155: Lab 1 + * + * + * Partner: + * Collaborators: + */ + + /* + * Fill in the appropriate portions above by replacing things delimited + * by '<'... '>'. + * + * Replace the '???' expression with your code in each function. The + * '???' expression is a Scala expression that throws a NotImplementedError + * exception. + * + * Your lab will not be graded if it does not compile. + * + * This template compiles without error. Before you submit comment out any + * code that does not compile or causes a failing assert. Simply put in a + * '???' as needed to get something that compiles without error. + */ + + /* + * Example: Test-driven development of `plus` + * + * A convenient, quick-and-dirty way to experiment, especially with small code + * fragments, is to use the interactive Scala interpreter. The simplest way + * to use the interactive Scala interpreter is through a worksheet, such as + * Lab1.worksheet.sc. A Scala Worksheet is code evaluated in the context of + * the project with results for each expression shown inline (somewhat like a + * Jupyter notebook). + * + * Step 0: Sketch an implementation in Lab1.scala using ??? for unimplemented things. + * Step 1: Do some experimentation in Lab1.worksheet.sc. + * Step 2: Write a test in Lab1Spec.scala, which should initially fail because of the ???. + * Step 3: Fill in the ??? here to finish the implementation to make your test pass. + */ + + //def plus(x: Int, y: Int): Int = ??? + def plus(x: Int, y: Int): Int = 0 + // def plus(x: Int, y: Int): Int = x + y + + /* Exercises */ + + def repeat(s: String, n: Int): String = ??? + + def sqrtStep(c: Double, xn: Double): Double = ??? + + def sqrtN(c: Double, x0: Double, n: Int): Double = ??? + + def sqrtErr(c: Double, x0: Double, epsilon: Double): Double = ??? + + def sqrt(c: Double): Double = { + require(c >= 0) + if (c == 0) 0 else sqrtErr(c, 1.0, 0.0001) + } + + /* Search Tree */ + + sealed abstract class Tree + case object Empty extends Tree + case class Node(l: Tree, d: Int, r: Tree) extends Tree + + def repOk(t: Tree): Boolean = { + def check(t: Tree, min: Int, max: Int): Boolean = t match { + case Empty => true + case Node(l, d, r) => ??? + } + check(t, Int.MinValue, Int.MaxValue) + } + + def insert(t: Tree, n: Int): Tree = ??? + + def deleteMin(t: Tree): (Tree, Int) = { + require(t != Empty) + (t: @unchecked) match { + case Node(Empty, d, r) => (r, d) + case Node(l, d, r) => + val (l1, m) = deleteMin(l) + ??? + } + } + + def delete(t: Tree, n: Int): Tree = ??? + + /* Evaluate the JavaScripty Calculator Language */ + + /* We import `jsy.lab1.ast._` so that we can make use of the Expr type defined + * there. Take a look at ast.scala to see what the Expr type looks like, as well + * some helper functions for defining values (`isValue`) and pretty-printing + * (`pretty`) that you are welcome to use. + */ + import jsy.lab1.ast._ + + def eval(e: Expr): Double = e match { + case N(n) => ??? + case _ => ??? + } + + /* We also overload `eval` to take a String and parse it into an Expr and then + * evaluate it using your `eval` function defined above. + */ + def eval(e: String): Double = eval(Parser.parse(e)) + +} diff --git a/src/main/scala/jsy/lab1/Lab1.worksheet.sc b/src/main/scala/jsy/lab1/Lab1.worksheet.sc new file mode 100644 index 0000000..a197f9a --- /dev/null +++ b/src/main/scala/jsy/lab1/Lab1.worksheet.sc @@ -0,0 +1,76 @@ +/* + * CSCI 3155: Lab 1 Worksheet + * + * This worksheet demonstrates how you could experiment + * interactively with your implementations in Lab1.scala. + */ + +/* + * Example: Test-driven development of `plus` + */ + +/* Here we can write expressions to experiment with how we might implement + * something. The expression is evaluated interactively. + */ +1 + 1 +val n = 1 + 1 +n + 3 + +/* The worksheet is built with all of the project files, so we can call + * a function from your `jsy.lab1.Lab1` object (in Lab1.scala). + */ +//jsy.lab1.Lab1.plus(3, 4) + +/* We can imports all of the functions from your `jsy.lab1.Lab1` object. */ +import jsy.lab1.Lab1._ +//plus(3, 4) + +/* We can check the implementation here, though it better to write tests + * in Lab1Spec.scala. + */ +//assert(plus(1, 1) == 2) + +/* Braces {} can be used wherever parentheses () can be (but not the other + * way around). Braces {} introduce scope, while () do not. + */ +// assert { +// val two = 2 +// plus(1, 1) == two +// } + +/* Exercises */ + +//assert(repeat("a", 3) == "aaa") + +/* We import jsy.lab.ast._ to use the AST nodes. */ +import jsy.lab1.ast._ + +/* A parser defines how to translate concrete syntax (i.e., strings a programmer types) + * into an abstract syntax tree (AST) that we use to evaluate the program. A parser + * is given to you in jsy.lab1.Parser. You can use the parser to parse a String into + * an Expr. + * + * Here are some shortcuts to that parser for your reference. +* */ +import jsy.lab1.Parser +def parse(s: String): Expr = Parser.parse(s) +def parseFile(filename: String): Expr = Parser.parseFile(filename) + +/* Call the parser (from the provided library) on a string */ +parse("-4") + +val negFourAST = parse("-4") +assert { + negFourAST match { + case Unary(_, _) => true + case _ => false + } +} + +/* Evaluate that `negFourAST` expression. */ +//eval(negFourAST) + +/* For convenience, we also have an overloaded `jsy.lab1.Lab1.eval` function that takes + * a String, calls the parser, and then delegates to your `eval` function. + */ +//eval("1 + 1") diff --git a/src/main/scala/jsy/lab1/Lab1Like.scala b/src/main/scala/jsy/lab1/Lab1Like.scala deleted file mode 100644 index 33eb798..0000000 --- a/src/main/scala/jsy/lab1/Lab1Like.scala +++ /dev/null @@ -1,27 +0,0 @@ -package jsy.lab1 - -import jsy.lab1.ast.Expr -import jsy.lab1.Parser.parse - -sealed abstract class SearchTree -case object Empty extends SearchTree -case class Node(l: SearchTree, d: Int, r: SearchTree) extends SearchTree - -trait Lab1Like { - def plus(x: Int, y: Int): Int - def abs(n: Double): Double - def xor(a: Boolean, b: Boolean): Boolean - def repeat(s: String, n: Int): String - def sqrtStep(c: Double, xn: Double): Double - def sqrtN(c: Double, x0: Double, n: Int): Double - def sqrtErr(c: Double, x0: Double, epsilon: Double): Double - def sqrt(c: Double): Double - - def repOk(t: SearchTree): Boolean - def insert(t: SearchTree, n: Int): SearchTree - def deleteMin(t: SearchTree): (SearchTree, Int) - def delete(t: SearchTree, n: Int): SearchTree - - def eval(e: Expr): Double - def eval(s: String): Double = eval(parse(s)) -} \ No newline at end of file diff --git a/src/main/scala/jsy/lab1/Parser.scala b/src/main/scala/jsy/lab1/Parser.scala index 131bf32..b7b8133 100644 --- a/src/main/scala/jsy/lab1/Parser.scala +++ b/src/main/scala/jsy/lab1/Parser.scala @@ -1,6 +1,3 @@ -/** - * - */ package jsy.lab1 import jsy.lab1.ast._ @@ -19,19 +16,19 @@ trait JSTokens extends token.StdTokens { } class Lexer extends lexical.StdLexical with JSTokens { - override def token: Parser[Token] = + override def token: this.Parser[Token] = decimal ~ opt(exponent) ^^ { case dec ~ exp => FloatLiteral(List(Some(dec), exp).flatten.mkString) } | super.token - def decimal: Parser[String] = + def decimal: this.Parser[String] = rep1(digit) ~ opt('.' ~ rep(digit)) ^^ { case ws ~ fs => List(Some(ws), fs map { mkList }).flatten.flatten.mkString } - def exponent: Parser[String] = + def exponent: this.Parser[String] = (accept('e') | accept('E')) ~ opt(accept('+') | accept('-')) ~ rep1(digit) ^^ { case exp ~ sign ~ digits => List(Some(List(exp)), sign map { List(_) }, Some(digits)).flatten.flatten.mkString @@ -52,10 +49,10 @@ trait TokenParser extends syntactical.StdTokenParsers { object Parser extends TokenParser { /* Lexer Set Up */ lexical.delimiters ++= List("(", ")", "-", "+", "*", "/") - - def prog: Parser[Expr] = expr - def expr: Parser[Expr] = binary(0) + def prog: this.Parser[Expr] = expr + + def expr: this.Parser[Expr] = binary(0) val binaryOperators: Vector[List[(String, (Expr, Expr) => Expr)]] = { def createBinaryFunction(op: Bop): (Expr, Expr) => Expr = @@ -68,46 +65,46 @@ object Parser extends TokenParser { ) } - def binary(level: Int): Parser[Expr] = + def binary(level: Int): this.Parser[Expr] = if (level >= binaryOperators.length) unary else binary(level + 1) * bop(level) - def bop(level: Int): Parser[(Expr, Expr) => Expr] = { - def doBop(opf: (String, (Expr, Expr) => Expr)): Parser[(Expr, Expr) => Expr] = { + def bop(level: Int): this.Parser[(Expr, Expr) => Expr] = { + def doBop(opf: (String, (Expr, Expr) => Expr)): this.Parser[(Expr, Expr) => Expr] = { val (op, f) = opf withpos(op) ^^ { case (pos, _) => ((e1, e2) => f(e1, e2) setPos pos) } } val bopf0 :: bopfrest = binaryOperators(level) - (doBop(bopf0) /: bopfrest)((acc, bopf) => acc | doBop(bopf)) + bopfrest.foldLeft(doBop(bopf0)) { (acc, bopf) => acc | doBop(bopf) } } - def unary: Parser[Expr] = + def unary: this.Parser[Expr] = positioned(uop ~ unary ^^ { case op ~ e => op(e) }) | term - def uop: Parser[Expr => Expr] = + def uop: this.Parser[Expr => Expr] = "-" ^^ (_ => (e: Expr) => Unary(Neg, e)) - def term: Parser[Expr] = + def term: this.Parser[Expr] = positioned( floatLit ^^ (s => N(s.toDouble)) ) | "(" ~> expr <~ ")" | failure("expected an expression") - def withpos[T](q: => Parser[T]): Parser[(Position, T)] = Parser { in => + def withpos[T](q: => this.Parser[T]): this.Parser[(Position, T)] = this.Parser { in => q(in) match { case Success(t, in1) => Success((in.pos,t), in1) case ns: NoSuccess => ns } } - def withposrep[T](q: => Parser[T]): Parser[List[(Position,T)]] = + def withposrep[T](q: => this.Parser[T]): this.Parser[List[(Position,T)]] = rep(withpos(q)) - def withposrep1[T](q: => Parser[T]): Parser[List[(Position,T)]] = + def withposrep1[T](q: => this.Parser[T]): this.Parser[List[(Position,T)]] = rep1(withpos(q)) private var parseSource: String = "" @@ -125,7 +122,8 @@ object Parser extends TokenParser { def parseTokens(tokens: lexical.Scanner): Expr = { phrase(prog)(tokens) match { case Success(e, _) => e - case NoSuccess(msg, next) => throw new SyntaxError(msg, next) + case Error(msg, next) => throw new SyntaxError(msg, next) + case Failure(msg, next) => throw new SyntaxError(msg, next) } } diff --git a/src/main/scala/jsy/lab1/ast.scala b/src/main/scala/jsy/lab1/ast.scala index 0875cdc..6a5ec79 100644 --- a/src/main/scala/jsy/lab1/ast.scala +++ b/src/main/scala/jsy/lab1/ast.scala @@ -6,7 +6,7 @@ import scala.util.parsing.input.Positional * @author Bor-Yuh Evan Chang */ object ast { - sealed abstract class Expr extends Positional + sealed trait Expr extends Positional /* Literals and Values*/ case class N(n: Double) extends Expr @@ -15,12 +15,10 @@ object ast { case class Unary(uop: Uop, e1: Expr) extends Expr case class Binary(bop: Bop, e1: Expr, e2: Expr) extends Expr - sealed abstract class Uop - + sealed trait Uop case object Neg extends Uop /* - */ - sealed abstract class Bop - + sealed trait Bop case object Plus extends Bop /* + */ case object Minus extends Bop /* - */ case object Times extends Bop /* * */ @@ -36,7 +34,7 @@ object ast { * Pretty-print values. * * We do not override the toString method so that the abstract syntax can be printed - * as is. + * as-is. */ def pretty(v: Expr): String = { require(isValue(v)) diff --git a/src/main/scala/jsy/student/Lab1.scala b/src/main/scala/jsy/student/Lab1.scala deleted file mode 100644 index 4715eea..0000000 --- a/src/main/scala/jsy/student/Lab1.scala +++ /dev/null @@ -1,131 +0,0 @@ -package jsy.student - -import jsy.lab1._ - -object Lab1 extends jsy.util.JsyApplication with jsy.lab1.Lab1Like { - import jsy.lab1.Parser - import jsy.lab1.ast._ - - /* - * CSCI 3155: Lab 1 - * - * - * Partner: - * Collaborators: - */ - - /* - * Fill in the appropriate portions above by replacing things delimited - * by '<'... '>'. - * - * Replace the '???' expression with your code in each function. The - * '???' expression is a Scala expression that throws a NotImplementedError - * exception. - * - * Do not make other modifications to this template, such as - * - adding "extends App" or "extends Application" to your Lab object, - * - adding a "main" method, and - * - leaving any failing asserts. - * - * Your lab will not be graded if it does not compile. - * - * This template compiles without error. Before you submit comment out any - * code that does not compile or causes a failing assert. Simply put in a - * '???' as needed to get something that compiles without error. - */ - - /* - * Example: Test-driven development of plus - * - * A convenient, quick-and-dirty way to experiment, especially with small code - * fragments, is to use the interactive Scala interpreter. The simplest way - * to use the interactive Scala interpreter in IntelliJ is through a worksheet, - * such as Lab1Worksheet.sc. A Scala Worksheet (e.g., Lab1Worksheet.sc) is code - * evaluated in the context of the project with results for each expression - * shown inline. - * - * Step 0: Sketch an implementation in Lab1.scala using ??? for unimmplemented things. - * Step 1: Do some experimentation in Lab1Worksheet.sc. - * Step 2: Write a test in Lab1Spec.scala, which should initially fail because of the ???. - * Step 3: Fill in the ??? to finish the implementation to make your test pass. - */ - - //def plus(x: Int, y: Int): Int = ??? - def plus(x: Int, y: Int): Int = x + y - - /* Exercises */ - - def abs(n: Double): Double = ??? - - def xor(a: Boolean, b: Boolean): Boolean = ??? - - def repeat(s: String, n: Int): String = ??? - - def sqrtStep(c: Double, xn: Double): Double = ??? - - def sqrtN(c: Double, x0: Double, n: Int): Double = ??? - - def sqrtErr(c: Double, x0: Double, epsilon: Double): Double = ??? - - def sqrt(c: Double): Double = { - require(c >= 0) - if (c == 0) 0 else sqrtErr(c, 1.0, 0.0001) - } - - /* Search Tree */ - - // Defined in Lab1Like.scala: - // - // sealed abstract class SearchTree - // case object Empty extends SearchTree - // case class Node(l: SearchTree, d: Int, r: SearchTree) extends SearchTree - - def repOk(t: SearchTree): Boolean = { - def check(t: SearchTree, min: Int, max: Int): Boolean = t match { - case Empty => true - case Node(l, d, r) => ??? - } - check(t, Int.MinValue, Int.MaxValue) - } - - def insert(t: SearchTree, n: Int): SearchTree = ??? - - def deleteMin(t: SearchTree): (SearchTree, Int) = { - require(t != Empty) - (t: @unchecked) match { - case Node(Empty, d, r) => (r, d) - case Node(l, d, r) => - val (l1, m) = deleteMin(l) - ??? - } - } - - def delete(t: SearchTree, n: Int): SearchTree = ??? - - /* JavaScripty */ - - def eval(e: Expr): Double = e match { - case N(n) => ??? - case _ => ??? - } - - - /* Interface to run your interpreter from the command-line. You can ignore the code below. */ - def processFile(file: java.io.File) { - if (debug) { println("Parsing ...") } - - val expr = Parser.parseFile(file) - - if (debug) { - println("\nExpression AST:\n " + expr) - println("------------------------------------------------------------") - } - - if (debug) { println("Evaluating ...") } - - val v = eval(expr) - - println(prettyNumber(v)) - } - -} diff --git a/src/main/scala/jsy/student/Lab1.worksheet.sc b/src/main/scala/jsy/student/Lab1.worksheet.sc deleted file mode 100644 index 7c9e490..0000000 --- a/src/main/scala/jsy/student/Lab1.worksheet.sc +++ /dev/null @@ -1,64 +0,0 @@ -/* - * CSCI 3155: Lab 1 Worksheet - * - * This worksheet demonstrates how you could experiment - * interactively with your implementations in Lab1.scala. - */ - -/* - * Example: Test-driven development of plus - */ - -// Here we can write expressions to experiment with how we might implement -// something. The expression is evaluated interactively. -1 + 1 -val n = 1 + 1 -n + 3 - -// The worksheet is built with all of the project files, so we can call -// a function from your jsy.student.Lab1 object (in Lab1.scala). -jsy.student.Lab1.plus(3, 4) - -// We can imports all of the functions from jsy.student.Lab1 -import jsy.student.Lab1._ -plus(3, 4) - -// We can check the implementation here, though it better to write tests -// in Lab1Spec.scala. -assert(plus(1, 1) == 2) - -// Braces {} can be used wherever parentheses () can be (but not the other -// way around). Braces {} introduce scope, while () do not. -assert { - val two = 2 - plus(1, 1) == two -} - -/* Exercises */ - -// Call jsy.student.Lab1.abs -//abs(-3) // Will fail until implemented in Lab1.scala. - -// Call the JavaScripty parser (from the provided library) on a string -jsy.lab1.Parser.parse("-4") - -// We can import the parse function from jsy.lab1.Parser to experiment -// with the provided parser. -import jsy.lab1.Parser.parse -val negFourAST = parse("-4") - -// We also want to import the AST nodes for convenience. -import jsy.lab1.ast._ -assert { - negFourAST match { - case Unary(_, _) => true - case _ => false - } -} - -// Evaluate that JavaScripty expression. -//eval(negFourAST) - -// For convenience, we also have an eval function that takes a string, -// which calls the parser and then delegates to your eval function. -//eval("1 + 1") diff --git a/src/main/scala/jsy/util/DoWith.scala b/src/main/scala/jsy/util/DoWith.scala deleted file mode 100644 index 89d279a..0000000 --- a/src/main/scala/jsy/util/DoWith.scala +++ /dev/null @@ -1,33 +0,0 @@ -package jsy.util - -/* - * DoWith is a data structure that holds a function that returns a result of - * type R with a input-output state of type W. - * - * Aside: This is also known as the State monad. - */ -sealed class DoWith[W,+R] private (doer: W => (W,R)) { - def apply(w: W) = doer(w) - - def map[B](f: R => B): DoWith[W,B] = new DoWith[W,B]({ - (w: W) => { - val (wp, r) = doer(w) - (wp, f(r)) - } - }) - - def flatMap[B](f: R => DoWith[W,B]): DoWith[W,B] = new DoWith[W,B]({ - (w: W) => { - val (wp, r) = doer(w) - f(r)(wp) // same as f(a).apply(s) - } - }) -} - -object DoWith { - def doget[W]: DoWith[W, W] = new DoWith[W, W]({ w => (w, w) }) - def doput[W](w: W): DoWith[W, Unit] = new DoWith[W, Unit]({ _ => (w, ()) }) - def doreturn[W, R](r: R): DoWith[W, R] = new DoWith[W, R]({ w => (w, r) }) // doget map { _ => r } - def domodify[W](f: W => W): DoWith[W, Unit] = new DoWith[W, Unit]({ w => (f(w), ()) }) // doget flatMap { w => doput(f(w)) } -} - diff --git a/src/main/scala/jsy/util/DoWithContext.scala b/src/main/scala/jsy/util/DoWithContext.scala deleted file mode 100644 index 7ee4d9c..0000000 --- a/src/main/scala/jsy/util/DoWithContext.scala +++ /dev/null @@ -1,31 +0,0 @@ -package jsy.util - -/* - * DoWithContext is a data structure that holds a function that returns a result of - * type R with a context C. - * - * Aside: This is also known as the Reader monad. - */ -sealed class DoWithContext[-C,+R] private (doer: C => R) { - def apply(c: C) = doer(c) - - def map[B](f: R => B): DoWithContext[C,B] = new DoWithContext[C,B]({ - (c: C) => { - val r = doer(c) - f(r) - } - }) - - def flatMap[D <: C,B](f: R => DoWithContext[D,B]): DoWithContext[D,B] = new DoWithContext[D,B]({ - (d: D) => { - val r = doer(d) - f(r)(d) - } - }) -} - -object DoWithContext { - def doget[C]: DoWithContext[C, C] = new DoWithContext[C,C]({ c => c }) - def doreturn[C,R](r: R): DoWithContext[C, R] = new DoWithContext[C,R]({ _ => r }) -} - diff --git a/src/main/scala/jsy/util/JsyApplication.scala b/src/main/scala/jsy/util/JsyApplication.scala deleted file mode 100644 index 8076591..0000000 --- a/src/main/scala/jsy/util/JsyApplication.scala +++ /dev/null @@ -1,93 +0,0 @@ -package jsy.util - -import java.io.{ByteArrayOutputStream, File} -import java.nio.file.Files - -trait JsyApplication { - import jsy.util.options - - var debug = false /* set to false to disable debugging output */ - var keepGoing = true /* set to true to keep going after exceptions */ - var maxSteps: Option[Int] = None /* set to a number to bound the number of execution steps */ - - var anonOption = ("input", - { case filename :: Nil => new File(filename) }: PartialFunction[List[String], File], - "A file containing a JavaScripty program or a directory with .jsy files.") - - var flagOptions = List( - ("debug", options.SetBool(b => debug = b, Some(b => debug == b)), "debugging"), - ("keep-going", options.SetBool(b => keepGoing = b, Some(b => keepGoing == b)), "keep going after exceptions"), - ("bound-steps", options.SetInt( - { i => maxSteps = i }, - Some({ - case true => maxSteps map { i => ": %d".format(i) } - case false => if (maxSteps == None) Some("") else None - })), - "bound for maximum number of execution steps before aborting") - ) - - def handle[T](default: T)(e: => T): T = - if (!keepGoing) e - else try e catch { - case exn: Throwable => println(exn.toString); default - } - - def processFile(file: File): Unit - - def testJsy(file: File)(k: (File, File, Unit => (Boolean, String)) => Unit) { - val jsyext = """[.]jsy$""".r - val ans: File = new File(jsyext.replaceAllIn(file.getPath, ".ans")) - k(file, ans, (_)=>{ - if (!ans.exists()) { - (false, s"Expected output file ${ans} does not exist.") - } - else { - val outstream = new ByteArrayOutputStream() - Console.withOut(outstream)(handle(()){ processFile(file)}) - - val encoding = java.nio.charset.StandardCharsets.UTF_8 - val ansstring = new String(Files.readAllBytes(ans.toPath), encoding) - - outstream.flush() - val outstring = new String(outstream.toString(encoding.toString)) - outstream.close() - - (ansstring == outstring, s"Computed output does not match expected output.\nComputed:\n${outstring}\nExpected:\n${ansstring}") - } - }) - } - - def isJsy(file: File): Boolean = { - val jsyext = """[.]jsy$""".r - jsyext findFirstIn file.getName match { - case Some(_) => true - case None => false - } - } - - def doFile(doit: File => Unit, file: File) = { - def loop(file: File) { - if (file.isFile) { - doit(file) - } - else if (file.isDirectory) { - file.listFiles filter { f => f.isDirectory || isJsy(f) } foreach loop - } - else { - throw new IllegalArgumentException("File %s does not exist.".format(file)) - } - } - loop(file) - } - - def test(fileordir: File)(k: (File, File, Unit => (Boolean, String)) => Unit) { - doFile({ f => testJsy(f)(k) }, fileordir) - } - - def main(args: Array[String]) { - val opts = new options.Options("jsy", flagOptions, anonOption) - val file: File = opts.process(args) - doFile(processFile, file) - } - -} diff --git a/src/main/scala/jsy/util/Visitor.scala b/src/main/scala/jsy/util/Visitor.scala deleted file mode 100644 index a74ec70..0000000 --- a/src/main/scala/jsy/util/Visitor.scala +++ /dev/null @@ -1,32 +0,0 @@ -package jsy.util - -object Visitor { - def apply[E,R](visitant: (E => R) => PartialFunction[E,R]) = new Visitor(visitant) - - def visit[E,R](visitant: (E => R) => PartialFunction[E,R])(e: E): R = { - def rec(e: E): R = visitant(rec)(e) - rec(e) - } -} - -/** A visitor of type Visitor[E,R] is an abstraction of a recursive function - * on E of type E => R where E is an algebraic data type that might be extended. - * - * @param visitant - * @tparam E - * @tparam R - */ -class Visitor[E,R] private (val visitant: (E => R) => PartialFunction[E,R]) { - private lazy val rec: E => R = Visitor.visit(visitant) - def apply(e: E) = rec(e) - - def orElse(that: Visitor[E,R]): Visitor[E,R] = orElse(that.visitant) - def orElse(that: (E => R) => PartialFunction[E,R]): Visitor[E,R] = new Visitor( - (v: E => R) => visitant(v) orElse that(v) - ) - - def extendWith(that: Visitor[E,R]): Visitor[E,R] = that orElse this - def extendWith(that: (E => R) => PartialFunction[E,R]) = new Visitor(that).orElse(this) - - def flatMap[B](op: (E => R) => Visitor[E,B]): Visitor[E,B] = op(rec) -} diff --git a/src/main/scala/jsy/util/VisitorWorksheet.sc b/src/main/scala/jsy/util/VisitorWorksheet.sc deleted file mode 100644 index b4e8d4a..0000000 --- a/src/main/scala/jsy/util/VisitorWorksheet.sc +++ /dev/null @@ -1,24 +0,0 @@ -import jsy.lab5.ast._ -import jsy.lab5.Parser.parse - -import jsy.util.Visitor - -val oldheight: Visitor[Expr,Int] = Visitor(rec => { - case N(_) => 1 - case Binary(_, e1, e2) => 1 + (rec(e1) max rec(e2)) -}) - - -val olde: Expr = parse("1 + (1 + 2)") -val oldh = oldheight(olde) - - -case class Foo(e: Expr) extends Expr -val newe: Expr = Binary(Plus, Foo(olde), N(3)) - -val newheight: Visitor[Expr,Int] = oldheight extendWith ((rec: Expr => Int) => { - case Foo(e1) => 1 + rec(e1) -}) - -val newh = newheight(newe) - diff --git a/src/main/scala/jsy/util/options.scala b/src/main/scala/jsy/util/options.scala deleted file mode 100644 index 8946c99..0000000 --- a/src/main/scala/jsy/util/options.scala +++ /dev/null @@ -1,101 +0,0 @@ -package jsy.util - -object options { - sealed abstract class Spec - case class SetBool(setter: Boolean => Unit, default: Option[Boolean => Boolean]) extends Spec - case class SetInt(setter: Option[Int] => Unit, default: Option[Boolean => Option[String]]) extends Spec - - class Options[T](program: String, specs: List[(String, Spec, String)], anon: (String, PartialFunction[List[String], T], String)) { - val opts: Map[String, List[String] => Option[List[String]]] = - (Map[String, List[String] => Option[List[String]]]() /: specs)((acc, spec) => spec match { - case (name, SetBool(setter, _), _) => - acc + - (("--" + name) -> { (t: List[String]) => setter(true); Some(t) }) + - (("--no-" + name) -> { (t: List[String]) => setter(false); Some(t) }) - case (name, SetInt(setter, _), _) => - acc + - (("--" + name) -> { (t: List[String]) => t match { - case arg :: t => - val argp: Int = try arg.toInt catch { case _: Throwable => usageErr() } - setter(Some(argp)); Some(t) - case _ => usageErr() - } }) + - (("--no-" + name) -> { (t: List[String]) => setter(None); Some(t) }) - }) - - val (anonName, anonDo, anonDesc) = anon - - val nameWidth: Int = opts.foldLeft(anonName.length){ case (acc, (n, _)) => acc max (n.length + 5) } - - def padRight(s: String, w: Int): String = { - val nspaces = (w - s.length) max 0 - s + (" " * nspaces) - } - - def optline(name: String, text: String): String = { - "%-2s".format("") + padRight(name, nameWidth) + " %s%n".format(text) - } - - val descriptions: String = { - (specs :\ "")((spec, acc) => spec match { - case (name, SetBool(_, default), desc) => { - def defaultStr(b: Boolean): String = - default map (f => if (f(b)) " (default)" else "") getOrElse("") - optline("--" + name, "turn on %s".format(desc) + defaultStr(true)) + - optline("--no-" + name, "turn off %s".format(desc) + defaultStr(false)) + - acc - } - case (name, SetInt(_, default), desc) => { - def defaultStr(b: Boolean): String = { - val opt = - for { - f <- default - s <- f(b) - } yield " (default%s)".format(s) - opt.getOrElse("") - } - optline("--" + name + " ", "set %s".format(desc) + defaultStr(true)) + - optline("--no-" + name, "unset %s".format(desc) + defaultStr(false)) + - acc - } - }) - } - - val header = - """ -Usage: %s [options] %s - -""".format(program, anonName) + -optline(anonName, anonDesc) + """ -Options: -""" - - private var currentArgs: List[String] = List() - - def usageErr(): Nothing = { - val unprocessed = currentArgs match { - case Nil => "" - case _ => """ -Unprocessed Arguments: - """ + currentArgs.reduceRight({ _ + " " + _ }) + "%n".format() - } - print(header + descriptions + unprocessed) - sys.exit(1) - } - - def process(args: Array[String]): T = { - def loop(l: List[String]): List[String] = { - currentArgs = l - l match { - case Nil => Nil - case h :: t => opts.get(h) match { - case None => l - case Some(doit) => { val tp = doit(t).getOrElse(t); loop(tp) } - } - } - } - val err: PartialFunction[List[String], T] = { case _ => usageErr() } - (anonDo orElse err)(loop(args.toList)) - } - } -} \ No newline at end of file diff --git a/src/test/scala/jsy/grader/Inginious.scala b/src/test/scala/jsy/grader/Inginious.scala deleted file mode 100644 index eb8fb61..0000000 --- a/src/test/scala/jsy/grader/Inginious.scala +++ /dev/null @@ -1,73 +0,0 @@ -package jsy.grader - -import java.io._ -import org.scalatest._ -import org.scalatest.events._ - -class Inginious extends Reporter { - val debug:Boolean = false - var total:Double = 0 - var succeeded:Double = 0 - var tempFileName: String = "FAIL" - - def writeGrade(grade: Double) { - if (debug) { - println(f"Number of Tests: $total\nNumber Correct: $succeeded\nGrade: $grade%.1f") - } - val pw = new PrintWriter(new File(tempFileName)) - pw.write(f"$grade%.1f\n") - pw.close() - } - - // The test runner calls apply for each test - def apply(event: Event): Unit = { - event match { - case RunStarting(_, _, configMap, _, _, _, _, _) => { - println("RunStarting") - // By passing a custom fileName for test output, - // students can't cheat (hopefully) - tempFileName = configMap.getRequired[String]("tempFileName") - } - case RunStopped(_, _, _, _, _, _, _, _) => { - println("RunStopped") - writeGrade(0) - } - case RunAborted(_, _, _, _, _, _, _, _, _, _) => { - println("RunAborted") - writeGrade(0) - } - case RunCompleted(_, _, _, _, _, _, _, _) => { - writeGrade(100 * succeeded / total) - println("RunCompleted") - } - case TestStarting(_, _, _, _, _, _, _, _, _, _, _, _) => { - total += 1 - if (debug) println("TestStarting") - } - case TestSucceeded(_, _, _, _, _, _, _, _, _, _, _, _, _, _) => { - succeeded += 1 - if (debug) println("TestSucceeded") - } - - // There are many other events, but they are mostly irrelevant to us - // I've just kept them here for completeness - case DiscoveryStarting(_, _, _, _) => if (debug) println("DiscoveryStarting") - case DiscoveryCompleted(_, _, _, _) => if (debug) println("DiscoveryCompleted") - case ScopeOpened(_, _, _, _, _, _, _, _) => if (debug) println("ScopeOpened") - case ScopeClosed(_, _, _, _, _, _, _, _) => if (debug) println("ScopeClosed") - case ScopePending(_, _, _, _, _, _, _, _) => if (debug) println("ScopePending") - case TestFailed(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _,_) => if (debug) println("TestFailed") - case TestCanceled(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _) => if (debug) println("TestCanceled") - case TestIgnored(_, _, _, _, _, _, _, _, _, _, _) => if (debug) println("TestIgnored") - case TestPending(_, _, _, _, _, _, _, _, _, _, _, _, _) => if (debug) println("TestPending") - case SuiteStarting(_, _, _, _, _, _, _, _, _, _) => if (debug) println("SuiteStarting") - case SuiteCompleted(_, _, _, _, _, _, _, _, _, _, _) => if (debug) println("SuiteCompleted") - case SuiteAborted(_, _, _, _, _, _, _, _, _, _, _, _, _) => if (debug) println("SuiteAborted") - case InfoProvided(_, _, _, _, _, _, _, _, _) => if (debug) println("InfoProvided") - case MarkupProvided(_, _, _, _, _, _, _, _) => if (debug) println("MarkupProvided") - case AlertProvided(_, _, _, _, _, _, _, _, _) => if (debug) println("AlertProvided") - case NoteProvided(_, _, _, _, _, _, _, _, _) => if (debug) println("NoteProvided") - case _ => println("Some other thing happened!") - } - } -} diff --git a/src/test/scala/jsy/lab1/Lab1Spec.scala b/src/test/scala/jsy/lab1/Lab1Spec.scala new file mode 100644 index 0000000..cf11a02 --- /dev/null +++ b/src/test/scala/jsy/lab1/Lab1Spec.scala @@ -0,0 +1,239 @@ +package jsy.lab1 + +import org.scalatest.flatspec.AnyFlatSpec +import jsy.lab1.Parser.parse + +/* + * We use a library called ScalaTest that makes it easy to write + * and run tests. + */ + +class Lab1Spec extends AnyFlatSpec { + /* Import your Lab 1 code. */ + import Lab1._ + + /* + * Example: Test-driven development of plus + * + * Test-driven development means that you first write a test before + * you write the code. This process makes it easier to guide you + * to implement just what you need correctly. + * + * Understandably, this feels overkill for this plus example and + * even for the Lab 1 assignment, but practicing this process now + * will definitely help later. + */ + + /* Define a single test case. The first string categorizes the test. + * By convention, we are using the function name. The second string + * gives an explanation for a test. For more information, go to + * http://scalatest.org/. + */ + + "plus" should "add 1 + 1 == 2" in { + /* Specify assertions here. */ + assert(plus(1, 1) == 2) + } + + it should "add 2 + 2 == 4" in { + /* It is convenient to distinguish the expected result from the code that + * you're testing, which affects the error messages when the test fails. + * + * You can also give an additional clue on test failure by providing an + * additional String argument. + */ + assertResult(2 + 2, "Recall addition.") { + plus(2, 2) + } + } + + /* Exercises */ + + "repeat" should "evaluate to repeated concatenation of a string" in { + assert(repeat("a", 3) == "aaa") + assert(repeat("abc", 3) == "abcabcabc") + assert(repeat("a", 1) == "a") + assert(repeat("abc", 1) == "abc") + assert(repeat("abc", 4) == "abcabcabcabc") + assert(repeat("", 5) == "") + } + + // it says make this test in the same category as the last one + it should "evaluate to an empty string when repeated zero times" in { + assert(repeat("abc", 0) == "") + assert(repeat("", 0) == "") + } + + // Check that repeat requires a non-negative repetition amount + + it should "throw an exception when a negative number of repetitions is expected" in { + intercept[java.lang.IllegalArgumentException] { + repeat("abc", -3) + } + } + + // Check that sqrt works. This requires steps for sqrtStep, sqrtN, and sqrtErr. + + "sqrtStep" should "evaluate to one iteration of Newton's method" in { + assert(sqrtStep(4, 1) == 2.5) + assert(sqrtStep(1, 1) == 1.0) + assert(sqrtStep(5, 8) == 4.3125) + } + + "sqrtN" should "perform several iterations of sqrtStep" in { + assert(sqrtN(4, 1, 2) == 2.05) + assert(sqrtN(4, 1, 6) == 2.0) + assert(sqrtN(4, 20, 2) == 5.248019801980198) + assert(sqrtN(4, 20, 6) == 2.0000105791285385) + } + + it should "evaluate to x0 if n is zero" in { + assert(sqrtN(4, 1, 0) == 1.0) + assert(sqrtN(4, 20, 0) == 20.0) + } + + "sqrtErr" should "perform iterations until the error is within epsilon" in { + assert(sqrtErr(4, 1, 0.1) == 2.000609756097561) + assert(sqrtErr(4, 1, 0.0001) == 2.0000000929222947) + assert(sqrtErr(4, 1, 0.00000001) == 2.000000000000002) + } + + // Make sure that the functions have the correct requires + + "sqrtN" should "throw an exception when n is negative" in { + intercept[java.lang.IllegalArgumentException] { + sqrtN(4, 1, -10) + } + } + + "sqrtErr" should "throw an exception when using a non-positive epsilon" in { + intercept[java.lang.IllegalArgumentException] { + sqrtErr(4, 1, -0.01) + } + intercept[java.lang.IllegalArgumentException] { + sqrtErr(4, 1, 0.0) + } + } + + // Have a few trees pre-made to test against, both valid and invalid + + val t1 = Node(Empty, 2, Empty) + val t2 = Node(t1, 4, Empty) + val t3 = Node(Empty, 4, t2) + val t4 = Node(t1, 4, Node(Empty, 4, Node(Empty, 5, Empty))) + val t5 = Node(Empty, 2, t1) + val t6 = Node(Empty, 4, Empty) + val t7 = Node(Empty, 2, Node(Empty, 4, Empty)) + val t8 = Node(Node(Empty, 1, Empty), 2, Node(Empty, 3, Empty)) + val t9 = Node(Empty, 2, Node(Empty, 3, Empty)) + val t10 = Node(Node(Empty, 1, Empty), 2, Empty) + val t11 = Node(Node(Empty, 1, Empty), 3, Empty) + + "repOk" should "ensure that a Tree is properly ordered" in { + assert(repOk(Empty)) + assert(repOk(t1)) + assert(repOk(t2)) + assert(!repOk(t3)) + assert(repOk(t4)) + assert(repOk(t5)) + } + + "insert" should "insert numbers as leaves in Trees at the proper position" in { + assert(insert(Empty, 2) == t1) + assert(insert(t1, 2) == t5) + assert(insert(t6, 2) == t2) + assert(insert(t1, 4) == t7) + } + + "deleteMin" should "remove the smallest value from a tree, and provide the resulting tree" in { + assert(deleteMin(t7) == (t6, 2)) + assert(deleteMin(t1) == (Empty, 2)) + assert(deleteMin(t5) == (t1, 2)) + assert( + deleteMin(t4) == (Node( + Empty, + 4, + Node(Empty, 4, Node(Empty, 5, Empty)) + ), 2) + ) + } + + "delete" should "remove a given value from a tree, if present" in { + assert(delete(t1, 2) == Empty) + assert(delete(t5, 2) == t1) + assert(delete(t8, 1) == t9) + assert(delete(t8, 3) == t10) + assert(delete(t8, 2) == t11) + assert(delete(t8, 4) == t8) + } + + // Some more testing code that uses the Scala List library. The function 'treeFromList' + // inserts all the elements in the list into the tree. It is likely the code + // will look quite mysterious now. We hope break it down eventually in the + // course, but you can try to figure it out by reading Scala documentation yourself. + // To get started, /: is an operator to corresponds to the 'foldLeft' method on + // lists. + + // Regardless, you can use this function to help test your code. + def treeFromList(l: List[Int]): Tree = l.foldLeft(Empty: Tree)(insert) + + "insert" should "produce trees that satisfy repOk" in { + assert(repOk(treeFromList(List(3, 4, 7, 2, 1, 10)))) + assert(repOk(treeFromList(List(1, 2, 3, 4, 5)))) + assert(repOk(treeFromList(List(9, 8, 7, 6, 5)))) + assert(repOk(treeFromList(List(1, 1, 1, 1)))) + } + + "insert-delete" should "produce trees that satisfy repOk" in { + val ins = (n: Int) => (t: Tree) => insert(t, n) + val del = (n: Int) => (t: Tree) => delete(t, n) + (List( + ins(2), + ins(6), + ins(10), + ins(22), + del(4), + del(6), + ins(4), + del(10), + del(4) + ).foldLeft(Empty: Tree)) { (t, f) => + { + val t1 = f(t) + assert(repOk(t1)) + t1 + } + } + } + + val evalTests = Map( + 1 -> ("1 + 1", 2), + 2 -> ("4 - 2", 2), + 3 -> ("4 * 2", 8), + 4 -> ("4 / 2", 2), + 5 -> ("4 / 0", Double.PositiveInfinity), + 6 -> ("-4 / 0", Double.NegativeInfinity), + 7 -> ("0 / 0", Double.NaN), + 8 -> ("1 + 2 * 3", 7), + 9 -> ("1 + (2 - 3) * 4 / (-5)", 1.8) + ) + + def assertEvalTests(i: Int): Unit = { + val (s, v) = evalTests(i) + val ast = Parser.parse(s) + assertResult(v, s". Note that $s ⇓ $v (i.e., eval($ast) = $v)."){ eval(s) } + } + + /* We list tests individually instead of iterating over them for better IDE integration. */ + + "eval" should "evaluate evalTests(1) correctly" in { assertEvalTests(1) } + it should "evaluate evalTests(2) correctly" in { assertEvalTests(2) } + it should "evaluate evalTests(3) correctly" in { assertEvalTests(3) } + it should "evaluate evalTests(4) correctly" in { assertEvalTests(4) } + it should "evaluate evalTests(5) correctly" in { assertEvalTests(5) } + it should "evaluate evalTests(6) correctly" in { assertEvalTests(6) } + it should "evaluate evalTests(7) correctly" in { assertEvalTests(7) } + it should "evaluate evalTests(8) correctly" in { assertEvalTests(8) } + it should "evaluate evalTests(9) correctly" in { assertEvalTests(9) } + +} \ No newline at end of file diff --git a/src/test/scala/jsy/student/Lab1Spec.scala b/src/test/scala/jsy/student/Lab1Spec.scala deleted file mode 100644 index 7061b4d..0000000 --- a/src/test/scala/jsy/student/Lab1Spec.scala +++ /dev/null @@ -1,263 +0,0 @@ -package jsy.student - -import jsy.lab1._ -import jsy.tester.JavascriptyTester -import org.scalatest.flatspec._ -import org.scalatest.Suites - -/* - * We use a library called ScalaTest that makes it easy to write - * and run tests. - * - * For Lab1, the Lab1Spec test file (this file) is the same as - * the test file for grading. - * - * In future assignments, this will change. - */ - -class Lab1Spec(lab1: Lab1Like) extends AnyFlatSpec { - import lab1._ - - /* - * Example: Test-driven development of plus - * - * Test-driven development means that you first write a test before - * you write the code. This process makes it easier to guide you - * to implement just what you need correctly. - * - * Understandably, this feels overkill for this plus example and - * even for the Lab 1 assignment. The complexity of implementations - * in this course increases quickly, so practicing this process now - * will definitely help later. - */ - - // Define a single test case. The first string categorizes the test. - // By convention, we are using the function name. The second string - // gives an explanation for a test. For more information, go to - // http://scalatest.org/. - - "plus" should "add two integers" in { - // Specify assertions here. - - // A simple assert is fine. - assert(plus(1, 1) === 2) - - // It is convenient to distinguish the expected result from the - // code that you're testing, which affects the error messages - // when the test fails. - assertResult(2) { - plus(1, 1) - } - } - - /* Exercises */ - - // Check that abs works for negative, positive and zero values - - "abs" should "evaluate to the absolute value of the argument" in { - assert(abs(2) === 2) - assert(abs(-2) === 2) - assert(abs(0) === 0) - } - - // Check that xor works for all four combinations of boolean values - - "xor" should "evaluate to the exclusive or of the arguments" in { - assert(!xor(true, true)) - assert(xor(true, false)) - assert(xor(false, true)) - assert(!xor(false, false)) - } - - // Check that repeat works - - "repeat" should "evaluate to repeated concatenation of a string" in { - assert(repeat("a", 3) === "aaa") - assert(repeat("abc", 3) === "abcabcabc") - assert(repeat("a", 1) === "a") - assert(repeat("abc", 1) === "abc") - assert(repeat("abc", 4) === "abcabcabcabc") - assert(repeat("", 5) === "") - } - - // it says make this test in the same category as the last one - it should "evaluate to an empty string when repeated zero times" in { - assert(repeat("abc", 0) === "") - assert(repeat("", 0) === "") - } - - // Check that repeat requires a non-negative repetition amount - - it should "throw an exception when a negative number of repetitions is expected" in { - intercept[java.lang.IllegalArgumentException] { - repeat("abc", -3) - } - } - - // Check that sqrt works. This requires steps for sqrtStep, sqrtN, and sqrtErr. - - "sqrtStep" should "evaluate to one iteration of Newton's method" in { - assert(sqrtStep(4, 1) === 2.5) - assert(sqrtStep(1, 1) === 1.0) - assert(sqrtStep(5, 8) === 4.3125) - } - - "sqrtN" should "perform several iterations of sqrtStep" in { - assert(sqrtN(4,1,2) === 2.05) - assert(sqrtN(4,1,6) === 2.0) - assert(sqrtN(4,20,2) === 5.248019801980198) - assert(sqrtN(4,20,6) === 2.0000105791285385) - } - - it should "evaluate to x0 if n is zero" in { - assert(sqrtN(4,1,0) === 1.0) - assert(sqrtN(4,20,0) === 20.0) - } - - "sqrtErr" should "perform iterations until the error is within epsilon" in { - assert(sqrtErr(4, 1, 0.1) === 2.000609756097561) - assert(sqrtErr(4, 1, 0.0001) === 2.0000000929222947) - assert(sqrtErr(4, 1, 0.00000001) === 2.000000000000002) - } - - - // Make sure that the functions have the correct requires - - "sqrtN" should "throw an exception when n is negative" in { - intercept[java.lang.IllegalArgumentException] { - sqrtN(4, 1, -10) - } - } - - "sqrtErr" should "throw an exception when using a non-positive epsilon" in { - intercept[java.lang.IllegalArgumentException] { - sqrtErr(4, 1, -0.01) - } - intercept[java.lang.IllegalArgumentException] { - sqrtErr(4, 1, 0.0) - } - } - - // Have a few trees pre-made to test against, both valid and invalid - - val t1 = Node(Empty, 2, Empty) - val t2 = Node(t1, 4, Empty) - val t3 = Node(Empty, 4, t2) - val t4 = Node(t1, 4, Node(Empty, 4, Node(Empty, 5, Empty))) - val t5 = Node(Empty, 2, t1) - val t6 = Node(Empty, 4, Empty) - val t7 = Node(Empty, 2, Node(Empty, 4, Empty)) - val t8 = Node(Node(Empty, 1, Empty), 2, Node(Empty, 3, Empty)) - val t9 = Node(Empty, 2, Node(Empty, 3, Empty)) - val t10 = Node(Node(Empty, 1, Empty), 2, Empty) - val t11 = Node(Node(Empty, 1, Empty), 3, Empty) - - // repOk - - "repOk" should "ensure that a SearchTree is properly ordered" in { - assert(repOk(Empty)) - assert(repOk(t1)) - assert(repOk(t2)) - assert(!repOk(t3)) - assert(repOk(t4)) - assert(repOk(t5)) - } - - // insertion - - "insert" should "insert numbers as leaves in SearchTrees at the proper position" in { - assert(insert(Empty, 2) === t1) - assert(insert(t1, 2) === t5) - assert(insert(t6, 2) === t2) - assert(insert(t1, 4) === t7) - } - - // deleteMin - - "deleteMin" should "remove the smallest value from a tree, and provide the resulting tree" in { - assert(deleteMin(t7) === (t6, 2)) - assert(deleteMin(t1) === (Empty, 2)) - assert(deleteMin(t5) === (t1, 2)) - assert(deleteMin(t4) === (Node(Empty, 4, Node(Empty, 4, Node(Empty, 5, Empty))), 2)) - } - - // delete - - "delete" should "remove a given value from a tree, if present" in { - assert(delete(t1, 2) === Empty) - assert(delete(t5, 2) === t1) - assert(delete(t8, 1) === t9) - assert(delete(t8, 3) === t10) - assert(delete(t8, 2) === t11) - assert(delete(t8, 4) === t8) - } - - // Some more testing code that uses the Scala List libray. The function 'treeFromList' - // inserts all the elements in the list into the tree. It is likely the code - // will look quite mysterious now. We hope break it down eventually in the - // course, but you can try to figure it out by reading Scala documentation yourself. - // To get started, /: is an operator to corresponds to the 'foldLeft' method on - // lists. - - // Regardless, you can use this function to help test your code. - def treeFromList(l: List[Int]): SearchTree = ((Empty: SearchTree) /: l)(insert) - - "insert" should "produce trees that satisfy repOk" in { - assert(repOk(treeFromList(List(3, 4, 7, 2, 1, 10)))) - assert(repOk(treeFromList(List(1, 2, 3, 4, 5)))) - assert(repOk(treeFromList(List(9, 8, 7, 6, 5)))) - assert(repOk(treeFromList(List(1, 1, 1, 1)))) - } - - "insert-delete" should "produce trees that satisfy repOk" in { - val ins = (n: Int) => (t: SearchTree) => insert(t,n) - val del = (n: Int) => (t: SearchTree) => delete(t,n) - ((Empty: SearchTree) /: List(ins(2), ins(6), ins(10), ins(22), del(4), del(6), ins(4), del(10), del(4)))( - (t, f) => { - val t1 = f(t) - assert(repOk(t1)) - t1 - } - ) - } - - // Eval - - "eval+" should "perform addition" in { - assert(eval("1 + 1") === 2) - } - - "eval-" should "perform subtraction" in { - assert(eval("4 - 2") === 2) - } - - "eval*" should "perform multiplication" in { - assert(eval("4 * 2") === 8) - } - - "eval/" should "perform division" in { - assert(eval("4 / 2") === 2) - } - - "eval/0" should "division by 0 should yield Infinity" in { - assert(eval("4 / 0") === Double.PositiveInfinity) - assert(eval("-4 / 0") === Double.NegativeInfinity) - } - - it should "0/0 should yield NaN" in { - assert(eval("0 / 0").isNaN) - } - -} - -// An adapter class to pass in your Lab1 object. -class Lab1SpecRunner extends Lab1Spec(jsy.student.Lab1) - -// The next bit of code runs a test for each .jsy file in src/test/resources/lab1. -// The test expects a corresponding .ans file with the expected result. -class Lab1JsyTests extends JavascriptyTester(None, "lab1", jsy.student.Lab1) - -class Lab1Suite extends Suites( - new Lab1SpecRunner, - new Lab1JsyTests -) diff --git a/src/test/scala/jsy/tester/JavascriptyTester.scala b/src/test/scala/jsy/tester/JavascriptyTester.scala deleted file mode 100644 index 8ce8fe9..0000000 --- a/src/test/scala/jsy/tester/JavascriptyTester.scala +++ /dev/null @@ -1,27 +0,0 @@ -package jsy.tester - -import java.io.File - -import jsy.util.JsyApplication -import org.scalatest._ -import flatspec._ - -/* - * A ScalaTest interface for running system tests. - */ -class JavascriptyTester(rootPrefix: Option[String], testDirectory: String, jsy: JsyApplication) extends AnyFlatSpec { - - val testResources = s"src${File.separator}test${File.separator}resources" - val testPrefix = rootPrefix match { - case None => testResources - case Some(p) => s"${p}${File.separator}${testResources}" - } - val testPath = s"${testPrefix}${File.separator}${testDirectory}" - jsy.test(new File(testPath)) { case (in,ans,assertion) => - s"eval on ${in}" should s"match ${ans}" in { - val (b: Boolean, msg: String) = assertion() - assert(b, msg) - } - } - -} diff --git a/testlab1.sh b/testlab1.sh deleted file mode 100755 index 3c2be5e..0000000 --- a/testlab1.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env bash - -SCRIPT_PATH=$(cd `dirname $0` && pwd) -cd ${SCRIPT_PATH} - -SBT_ARGS="testOnly Lab1Suite" -sbt "${SBT_ARGS}"