开发者

Java and junit: derivative of polynomial method testing issue

开发者 https://www.devze.com 2022-12-25 07:47 出处:网络
im trying to finish up my junit testing for finding the derivative of a polynomial method and im having some trouble making it work. here is the method:

im trying to finish up my junit testing for finding the derivative of a polynomial method and im having some trouble making it work. here is the method:

    public Polynomial derivative() {
  MyDouble a = new MyDouble(0);
  MyDouble b = this.a.add(this.a);
  MyDouble c = this.b;
  Polynomial poly = new Polynomial (a, b, c);
  return poly;
 } 

and here is the junit test:

    public void testDerivative() {
  MyDouble a = new MyDouble(2), b = new MyDouble(4), c = new MyDouble(8);
  MyDouble d = new MyDouble(0), e = new MyDouble(4), f = new开发者_开发问答 MyDouble(4);

  Polynomial p1 = new Polynomial(a, b, c);
  Polynomial p2 = new Polynomial(d,e,f);
  assertTrue(p1.derivative().equals(p2));
 }

im not too sure why it isnt working...ive gone over it again and again and i know im missing something. thank you all for any help given, appreciate it


What the previous two answers are hinting at is that, if the Polynomial class doesn't implement equals(), then you are using Object.equals() in the test. Object.equals() is checking that p1.derivative() and p2 are the same object (which they clearly are not) when you want to verify that p1.derivative() and p2 have the same value....

The usual solution would be to implement Polynomial.equals(Polynomial rhs), which would make sure that the three MyDoubles on each side are equals(). Of course, you'll also have to ensure that MyDoubles.equals(MyDouble rhs) does the Right Thing.


Is the equals method implemented correctly?


Does your Polynomial class implement equals?

Otherwise it is going to an Object level comparison. Meaning that the pointers of the two objects must match for it to be equal. You have to implement equals to show that the values of Polynomial(a, b, c) == Polynomial(d, e, f).

I don't know what the data structure of Polynomial is, but you would do something like:

public boolean equals(Polynomial p) 
{
    // where a b and c are private MyDouble variables 
    if (p.a == this.a && p.b == this.b && p.c == this.c) 
        return true;
    else 
        return false;
}
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号