Hi Dan,
Thanks a lot for your patch! I committed it as well as a few
adjustments.
If I remove all tags from the complex and rational specs, we do have
11 failures vs 455 expectations, which is a huge progress!
Might be interesting to investigate these failing specs. I suspect
some of them have not been ported to Ruby 1.9 yet.
$ rm spec/frozen/tags/macruby/core/complex/*.txt
$ rm spec/frozen/tags/macruby/core/rational/*.txt
$ ./miniruby -I./lib ./mspec/bin/mspec-ci -B ./spec/macruby.mspec spec/
frozen/core/rational spec/frozen/core/complex
.FF
..........................................F
............F.F
...................................................F
.........EEE......................
1)
Rational() passed two arguments sets the numerator to the first
argument FAILED
Expected 136053744742862656 to equal 362809985980967168
0:in `fail:'
0:in `fail_with:'
0:in `==:'
0:in `each'
0:in `protect:'
0:in `each'
0:in `all?'
0:in `protect:'
0:in `each'
0:in `process'
0:in `describe:'
0:in `context:'
0:in `ruby_version_is:'
0:in `load:'
0:in `protect:'
0:in `each'
0:in `files'
0:in `process'
0:in `run'
2)
Rational() passed two arguments sets the denominator to the second
argument FAILED
Expected 990791918021509 to equal 2642111781390691
0:in `fail:'
0:in `fail_with:'
0:in `==:'
0:in `each'
0:in `protect:'
0:in `each'
0:in `all?'
0:in `protect:'
0:in `each'
0:in `process'
0:in `describe:'
0:in `context:'
0:in `ruby_version_is:'
0:in `load:'
0:in `protect:'
0:in `each'
0:in `files'
0:in `process'
0:in `run'
3)
Rational#divmod when passed an Integer returns the quotient as Integer
and the remainder as Rational FAILED
Expected [768614336404564480, (512/1)] to equal [768614336404564650,
(2/1)]
0:in `fail:'
0:in `fail_with:'
0:in `==:'
0:in `protect:'
0:in `each'
0:in `all?'
0:in `protect:'
0:in `each'
0:in `process'
0:in `describe:'
0:in `context:'
0:in `ruby_version_is:'
0:in `load:'
0:in `protect:'
0:in `each'
0:in `files'
0:in `process'
0:in `run'
4)
Rational#** when passed Rational returns a complex number when self is
negative and the passed argument is not 0 FAILED
Expected NaN to equal (-0.733761610865473+1.27091239066258i)
0:in `fail:'
0:in `fail_with:'
0:in `==:'
0:in `protect:'
0:in `each'
0:in `all?'
0:in `protect:'
0:in `each'
0:in `process'
0:in `describe:'
0:in `context:'
0:in `ruby_version_is:'
0:in `load:'
0:in `protect:'
0:in `each'
0:in `files'
0:in `process'
0:in `run'
5)
Rational#** when passed Float returns a complex number if self is
negative and the passed argument is not 0 FAILED
Expected NaN to equal (-3.3746182904644e-16-1.83711730708738i)
0:in `fail:'
0:in `fail_with:'
0:in `==:'
0:in `protect:'
0:in `each'
0:in `all?'
0:in `protect:'
0:in `each'
0:in `process'
0:in `describe:'
0:in `context:'
0:in `ruby_version_is:'
0:in `load:'
0:in `protect:'
0:in `each'
0:in `files'
0:in `process'
0:in `run'
6)
Complex#/ with Float raises a ZeroDivisionError when given 0.0 FAILED
Expected ZeroDivisionError but no exception was raised
0:in `fail:'
0:in `fail_with:'
0:in `should'
7)
Complex#% with Complex returns the remainder from complex division ERROR
NoMethodError: undefined method `div' for (13+44i):Complex
0:in `modulo:'
0:in `protect:'
0:in `each'
0:in `all?'
0:in `protect:'
0:in `each'
0:in `process'
0:in `describe:'
0:in `context:'
0:in `ruby_version_is:'
0:in `load:'
0:in `protect:'
0:in `each'
0:in `files'
0:in `process'
0:in `run'
8)
Complex#% with Integer returns the remainder from dividing both parts
of self by the given Integer ERROR
NoMethodError: undefined method `div' for (21+42i):Complex
0:in `modulo:'
0:in `protect:'
0:in `each'
0:in `all?'
0:in `protect:'
0:in `each'
0:in `process'
0:in `describe:'
0:in `context:'
0:in `ruby_version_is:'
0:in `load:'
0:in `protect:'
0:in `each'
0:in `files'
0:in `process'
0:in `run'
9)
Complex#% with Object tries to coerce self into other ERROR
NoMethodError: undefined method `div' for (3+9i):Complex
0:in `modulo:'
0:in `protect:'
0:in `each'
0:in `all?'
0:in `protect:'
0:in `each'
0:in `process'
0:in `describe:'
0:in `context:'
0:in `ruby_version_is:'
0:in `load:'
0:in `protect:'
0:in `each'
0:in `files'
0:in `process'
0:in `run'
10)
An exception occurred during: Mock.verify_count
Complex#% with Object tries to coerce self into other FAILED
Mock 'Object' expected to receive 'coerce' exactly 1 times
but received it 0 times
0:in `fail:'
0:in `fail_with:'
Finished in 2.661908 seconds
49 files, 142 examples, 455 expectations, 7 failures, 3 errors
Laurent
On Jul 29, 2009, at 9:31 PM, dan sinclair wrote:
As requested I grabbed the latest rational.c and complex.c from ruby
SVN and got them working under MacRuby. Patch is attached.
dan
<rational_complex_2.diff.gz>
On Jul 28, 2009, at 11:54 PM, dan sinclair wrote:
Hello,
I started to port the Rational code to the objc interfaces. There
are currently 8 specs left for rational that I haven't been able to
get to pass. As part of the rational I also did a bit of the
Complex code but there are some specs in there that are segv'ing so
I'm not sure how many of those pass at the moment.
Patch is attached. Let me know if I need to fix anything up.
Thanks,
dan
(I would have logged this into trac but I can't seem to login at
the moment. Continuously redirects between http://www.macruby.org/auth/login
and https://www.macruby.org/auth/login)
<rational_complex_1.diff>
_______________________________________________
MacRuby-devel mailing list
MacRuby-devel@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
_______________________________________________
MacRuby-devel mailing list
MacRuby-devel@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
_______________________________________________
MacRuby-devel mailing list
MacRuby-devel@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel