ruby/test/dl/test_win32.rb

55 строки
1.0 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