1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/test/dl/test_win32.rb
akr 3ce642f5af * test/dl: use require_relative to require test_base.rb.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24833 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-09-10 17:14:53 +00:00

54 lines
1 KiB
Ruby

require_relative 'test_base'
require 'dl/import'
require 'dl/types'
class DL::TestWin32 < DL::TestBase
module Win32API
extend DL::Importer
dlload "kernel32.dll"
include DL::Win32Types
OSVERSIONINFO = struct [
"DWORD dwOSVersionInfoSize",
"DWORD dwMajorVersion",
"DWORD dwMinorVersion",
"DWORD dwBuildNumber",
"DWORD dwPlatformId",
"UCHAR szCSDVersion[128]",
]
typealias "POSVERSIONINFO", "OSVERSIONINFO*"
extern "BOOL GetVersionEx(POSVERSIONINFO)", :stdcall
def get_version_ex()
ptr = OSVERSIONINFO.malloc()
ptr.dwOSVersionInfoSize = OSVERSIONINFO.size
ret = GetVersionEx(ptr)
if( ret )
ptr
else
nil
end
end
module_function :get_version_ex
rescue DL::DLError
end
if defined?(Win32API::OSVERSIONINFO)
def test_version()
platform = Win32API.get_version_ex().dwPlatformId
case ENV['OS']
when 'Windows_NT'
expect = 2
when /Windows.+/
expect = 1
else
expect = 0
end
assert_equal(expect, platform)
end
end
end