<"This is a test\n"> expected but was <"This is a test\r\n">. windows default is to use CRLF for a new line and the CLR inherits that But for ruby the new line constant is a LF which ruby inherits from *nix based systems
the dirty workaround is either specify data0 = "This is a test\r\n" or data1.gsub! /\n/, "\r\n" or data2.gsub! /\r\n/, "\n" AFAIK there is no way to override the Environment.NewLine constant in a way the CLR will pick it up. --- Met vriendelijke groeten - Best regards - Salutations Ivan Porto Carrero Blog: http://flanders.co.nz Twitter: http://twitter.com/casualjim Author of IronRuby in Action (http://manning.com/carrero) On Fri, Oct 23, 2009 at 2:31 PM, Håkon Clausen <hako...@hclausen.net> wrote: > Thanks, > CreateBinary made the picture file pass the test. > I'm having some trouble with some plain text and newlines. Any idea why > "test_3" don't pass? > > require 'test/unit' > include System::IO > class Binstring < Test::Unit::TestCase > > def test_1 > fileName = 'flowers.jpg' > > #Ruby > data1 = File.read(fileName) > > #.Net > fs = FileStream.new(fileName, FileMode.Open, FileAccess.Read) > br = BinaryReader.new(fs) > numBytes = FileInfo.new(fileName).Length > buff = br.ReadBytes(numBytes) > data2 = String.CreateBinary(buff) > > assert data1 == data2 > end > > def test_2 > fileName = 'flowers.jpg' > > #Ruby > data1 = File.read(fileName) > > #.Net > fs = FileStream.new(fileName, FileMode.Open, FileAccess.Read) > data2 = "".Append(fs, fs.length) > > assert data1 == data2 > end > > def test_3 > data0 = "This is a test\n" > File.open('test.txt', 'w') {|f| f.write(data0) } > data1 = File.read('test.txt') > fs = FileStream.new('test.txt', FileMode.Open, FileAccess.Read) > br = BinaryReader.new(fs) > numBytes = FileInfo.new('test.txt').Length > buff = br.ReadBytes(numBytes) > data2 = String.CreateBinary(buff) > > assert_equal data0, data1 > assert_equal data0, data2 > assert_equal data1, data2 > end > end > > ----------- > > Loaded suite binstring > Started > ..F > Finished in 0.46875 seconds. > > 1) Failure: > test_3(Binstring) > [binstring.rb:45:in `test_3' > c:/Ironruby/lib/IronRuby/test/unit/testcase.rb:79:in `run' > :0:in `send' > testrunner.rb:66:in `start_mediator' > :0:in `each']: > <"This is a test\n"> expected but was > <"This is a test\r\n">. > > 3 tests, 4 assertions, 1 failures, 0 errors > > > On Fri, 23 Oct 2009 03:56:38 +0200, Tomas Matousek < > tomas.matou...@microsoft.com> wrote: > > In this particular case, I would recommend to use .NET API: >> >> include System::IO >>>>> >>>> => Object >> >>> stream = FileStream.new("c:\\temp\\a.txt", FileMode.Open, >>>>> FileAccess.Read) >>>>> >>>> => System.IO.FileStream >> >>> "".Append(stream, stream.Length) >>>>> >>>> => "hello" >> >> Tomas >> > _______________________________________________ > Ironruby-core mailing list > Ironruby-core@rubyforge.org > http://rubyforge.org/mailman/listinfo/ironruby-core >
_______________________________________________ Ironruby-core mailing list Ironruby-core@rubyforge.org http://rubyforge.org/mailman/listinfo/ironruby-core