mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
bda37095ca
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7883 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
53 lines
979 B
Ruby
53 lines
979 B
Ruby
require 'test_base'
|
|
require 'dl/import'
|
|
require 'dl/types'
|
|
|
|
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
|
|
end
|
|
|
|
module DL
|
|
class TestWin32 < TestBase
|
|
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
|