objects.lua 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. -- objects put in their own test methods to test all attributes and class methods
  2. -- File (love.filesystem.newFile)
  3. love.test.objects.File = function(test)
  4. -- setup a file to play with
  5. local file1 = love.filesystem.openFile('data.txt', 'w')
  6. file1:write('helloworld')
  7. test:assertObject(file1)
  8. file1:close()
  9. -- test read mode
  10. file1:open('r')
  11. test:assertEquals('r', file1:getMode(), 'check read mode')
  12. local contents, size = file1:read()
  13. test:assertEquals('helloworld', contents)
  14. test:assertEquals(10, size, 'check file read')
  15. test:assertEquals(10, file1:getSize())
  16. local ok, err = file1:write('hello')
  17. test:assertNotEquals(nil, err, 'check cant write in read mode')
  18. local iterator = file1:lines()
  19. test:assertNotEquals(nil, iterator, 'check can read lines')
  20. test:assertEquals('data.txt', file1:getFilename(), 'check filename matches')
  21. file1:close()
  22. -- test write mode
  23. file1:open('w')
  24. test:assertEquals('w', file1:getMode(), 'check write mode')
  25. contents, size = file1:read()
  26. test:assertEquals(nil, contents, 'check cant read file in write mode')
  27. test:assertEquals('string', type(size), 'check err message shown')
  28. ok, err = file1:write('helloworld')
  29. test:assertEquals(true, ok, 'check file write')
  30. test:assertEquals(nil, err, 'check no err writing')
  31. -- test open/closing
  32. file1:open('r')
  33. test:assertEquals(true, file1:isOpen(), 'check file is open')
  34. file1:close()
  35. test:assertEquals(false, file1:isOpen(), 'check file gets closed')
  36. file1:close()
  37. -- test buffering
  38. -- @NOTE think I'm just not understanding how this is supposed to work?
  39. -- I thought if buffering is enabled then nothing should get written until
  40. -- buffer overflows?
  41. file1:open('a')
  42. ok, err = file1:setBuffer('full', 10000)
  43. test:assertEquals(true, ok)
  44. test:assertEquals('full', file1:getBuffer())
  45. file1:write('morecontent')
  46. file1:close()
  47. file1:open('r')
  48. contents, size = file1:read()
  49. test:assertEquals('helloworld', contents, 'check buffered content wasnt written')
  50. file1:close()
  51. -- test buffering and flushing
  52. file1:open('w')
  53. ok, err = file1:setBuffer('full', 10000)
  54. test:assertEquals(true, ok)
  55. test:assertEquals('full', file1:getBuffer())
  56. file1:write('replacedcontent')
  57. file1:flush()
  58. file1:close()
  59. file1:open('r')
  60. contents, size = file1:read()
  61. test:assertEquals('replacedcontent', contents, 'check buffered content was written')
  62. file1:close()
  63. -- loop through file data with seek/tell until EOF
  64. file1:open('r')
  65. local counter = 0
  66. for i=1,100 do
  67. file1:seek(i)
  68. test:assertEquals(i, file1:tell())
  69. if file1:isEOF() == true then
  70. counter = i
  71. break
  72. end
  73. end
  74. test:assertEquals(counter, 15)
  75. file1:close()
  76. file1:release()
  77. end
  78. -- Source (love.audio.newSource)
  79. -- love.test.objects.Source = function(test)
  80. -- local source1 = love.audio.newSource('resources/click.ogg', 'static')
  81. --source1:clone()
  82. --source1:getChannelCount()
  83. --source1:getDuration()
  84. --source1:isRelative()
  85. --source1:queue()
  86. --source1:getFreeBufferCount()
  87. --source1:getType()
  88. --source1:isPlaying()
  89. --source1:play()
  90. --source1:pause()
  91. --source1:stop()
  92. --source1:seek()
  93. --source1:tell()
  94. --source1:isLooping()
  95. --source1:setLooping()
  96. --source1:setAirAbsorption()
  97. --source1:getAirAbsorption()
  98. --source1:setAttenuationDistances()
  99. --source1:getAttenuationDistances()
  100. --source1:setCone()
  101. --source1:getCone()
  102. --source1:setDirection()
  103. --source1:getDirection()
  104. --source1:setEffect()
  105. --source1:getEffect()
  106. --source1:getActiveEffects()
  107. --source1:setFilter()
  108. --source1:getFilter()
  109. --source1:setPitch()
  110. --source1:getPitch()
  111. --source1:setPosition()
  112. --source1:getPosition()
  113. --source1:setRelative()
  114. --source1:setRolloff()
  115. --source1:getRolloff()
  116. --source1:setVelocity()
  117. --source1:getVelocity()
  118. --source1:setVolume()
  119. --source1:getVolume()
  120. --source1:setVolumeLimits()
  121. --source1:getVolumeLimits()
  122. -- end
  123. -- FileData (love.filesystem.newFileData)
  124. -- ByteData (love.data.newByteData)
  125. -- DataView (love.data.newDataView)
  126. -- FontData (love.font.newFontData)
  127. -- GlyphData (love.font.newGlyphData)
  128. -- Rasterizer (love.font.newRasterizer)
  129. -- CompressedImageData (love.image.newCompressedImageData)
  130. -- ImageData (love.image.newImageData)
  131. -- BezierCurve (love.math.newBezierCurve)
  132. -- RandomGenerator (love.math.RandomGenerator)
  133. -- Transform (love.math.Transform)
  134. -- Decoder (love.sound.newDecoder)
  135. -- SoundData (love.sound.newSoundData)
  136. -- Channel (love.thread.newChannel)
  137. -- Thread (love.thread.newThread)
  138. -- VideoStream (love.thread.newVideoStream)
  139. -- all the stuff from love.physics! barf
  140. -- (love.graphics objs)
  141. -- Canvas
  142. -- Font
  143. -- Image
  144. -- Framebugger
  145. -- Mesh
  146. -- ParticleSystem
  147. -- PixelEffect
  148. -- Quad
  149. -- Shader
  150. -- SpriteBatch
  151. -- Text
  152. -- Video