Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala案例类测试_Scala_Testing_Case Class - Fatal编程技术网

Scala案例类测试

Scala案例类测试,scala,testing,case-class,Scala,Testing,Case Class,我定义了一个带有案例类点和线段的密封特征形状,并且有一个类线段的行为,它告诉我两条线段是否相交,但是当我尝试测试该行为时。。它说它无法在测试套件中识别它 sealed trait Shape case class Point(x: Int, y: Int) extends Shape { //require(x != null & y !=null, "null values for point") } case class LineSegment(point1: Point, poi

我定义了一个带有案例类点和线段的密封特征形状,并且有一个类线段的行为,它告诉我两条线段是否相交,但是当我尝试测试该行为时。。它说它无法在测试套件中识别它

sealed trait Shape
case class Point(x: Int, y: Int) extends Shape {
//require(x != null & y !=null, "null values for point")
}

case class LineSegment(point1: Point, point2: Point)  extends Shape {
 require(point1 != point2)

 def intersect(lineSegment1: LineSegment, lineSegment2:LineSegment): 
 Boolean ={
// val A1, A2, B1, B2, C1, C2
val A1 = lineSegment1.point2.y - lineSegment1.point1.y
val B1 = lineSegment1.point1.x - lineSegment1.point2.x
val C1 = A1 * lineSegment1.point1.x + B1 * lineSegment1.point1.y

val A2 = lineSegment2.point2.y - lineSegment2.point1.y
val B2 = lineSegment2.point1.x - lineSegment2.point2.x
val C2 = A2 * lineSegment2.point1.x + B2 * lineSegment2.point1.y

val det = A1 * B2 - A2 * B1
if(det == 0)
  return false
else
  return true

}

}
这就是我要做的测试

import model.Point
import model.LineSegment
import org.scalatest.{FlatSpec, ShouldMatchers}

 class LineIntersectionTest extends FlatSpec with ShouldMatchers{
 val point1 = Point(20,30);
 val point2 = Point(10,35);
 val point3 = Point(100,10);
 val point4 = Point(16,45);

 val lineSegment1 = LineSegment(point1,point2);
 val lineSegment2 = LineSegment(point3,point4);

  "LineSegmentIntersection Behaviour" should "work for a line segment"  
  in {
  intersect(lineSegment1, lineSegment2) should be (true)
   }}
但我得到一个错误无法解析符号相交,无法解析符号应该。。它没有识别方法


我在这里做错了什么?

您正在使用intersect,就好像它是LineIntersectionTest类上的函数一样。以下方面应起作用:

lineSegment1.intersect(lineSegment1, lineSegment2) should be (true)
但是,我可能会使用不同的实现。也许:

object LineUtils {
  def intersect(l1: LineSegment, l2: LineSegment): Boolean
}

// Usage
LineUtils.insersect(lineSegment1, lineSegment2)

好的。但是在OO之后,更好的方法是赋予直线一种责任,即知道它是否与给定的另一条直线相交。