15ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// Copyright 2009 the V8 project authors. All rights reserved. 25ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// Redistribution and use in source and binary forms, with or without 35ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// modification, are permitted provided that the following conditions are 45ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// met: 55ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// 65ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// * Redistributions of source code must retain the above copyright 75ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// notice, this list of conditions and the following disclaimer. 85ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// * Redistributions in binary form must reproduce the above 95ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// copyright notice, this list of conditions and the following 105ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// disclaimer in the documentation and/or other materials provided 115ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// with the distribution. 125ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// * Neither the name of Google Inc. nor the names of its 135ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// contributors may be used to endorse or promote products derived 145ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// from this software without specific prior written permission. 155ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// 165ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 175ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 185ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 195ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 205ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 215ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 225ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 235ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 245ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 255ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 265ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 275ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org 28196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "src/v8.h" 295ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org 30196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "src/version.h" 31196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "test/cctest/cctest.h" 325ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org 335ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.orgusing namespace v8::internal; 345ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org 355ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org 3671affb54842da76b24f0bb3184e9f0960523f89dkasperl@chromium.orgnamespace v8 { 3771affb54842da76b24f0bb3184e9f0960523f89dkasperl@chromium.orgnamespace internal { 385ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org 395ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.orgvoid SetVersion(int major, int minor, int build, int patch, 405ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org bool candidate, const char* soname) { 415ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org Version::major_ = major; 425ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org Version::minor_ = minor; 435ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org Version::build_ = build; 445ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org Version::patch_ = patch; 455ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org Version::candidate_ = candidate; 465ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org Version::soname_ = soname; 475ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org} 485ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org 495ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org} } // namespace v8::internal 505ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org 515ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org 525ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.orgstatic void CheckVersion(int major, int minor, int build, 535ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org int patch, bool candidate, 545ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org const char* expected_version_string, 555ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org const char* expected_generic_soname) { 565ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org static v8::internal::EmbeddedVector<char, 128> version_str; 575ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org static v8::internal::EmbeddedVector<char, 128> soname_str; 585ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org 595ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org // Test version without specific SONAME. 605ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org SetVersion(major, minor, build, patch, candidate, ""); 615ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org Version::GetString(version_str); 625ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org CHECK_EQ(expected_version_string, version_str.start()); 635ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org Version::GetSONAME(soname_str); 645ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org CHECK_EQ(expected_generic_soname, soname_str.start()); 655ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org 665ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org // Test version with specific SONAME. 675ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org const char* soname = "libv8.so.1"; 685ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org SetVersion(major, minor, build, patch, candidate, soname); 695ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org Version::GetString(version_str); 705ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org CHECK_EQ(expected_version_string, version_str.start()); 715ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org Version::GetSONAME(soname_str); 725ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org CHECK_EQ(soname, soname_str.start()); 735ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org} 745ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org 755ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org 765ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.orgTEST(VersionString) { 77a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#ifdef USE_SIMULATOR 78a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org CheckVersion(0, 0, 0, 0, false, "0.0.0 SIMULATOR", "libv8-0.0.0.so"); 79a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org CheckVersion(0, 0, 0, 0, true, 80a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org "0.0.0 (candidate) SIMULATOR", "libv8-0.0.0-candidate.so"); 81a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org CheckVersion(1, 0, 0, 0, false, "1.0.0 SIMULATOR", "libv8-1.0.0.so"); 82a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org CheckVersion(1, 0, 0, 0, true, 83a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org "1.0.0 (candidate) SIMULATOR", "libv8-1.0.0-candidate.so"); 84a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org CheckVersion(1, 0, 0, 1, false, "1.0.0.1 SIMULATOR", "libv8-1.0.0.1.so"); 85a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org CheckVersion(1, 0, 0, 1, true, 86a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org "1.0.0.1 (candidate) SIMULATOR", "libv8-1.0.0.1-candidate.so"); 87a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org CheckVersion(2, 5, 10, 7, false, "2.5.10.7 SIMULATOR", "libv8-2.5.10.7.so"); 88a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org CheckVersion(2, 5, 10, 7, true, 89a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org "2.5.10.7 (candidate) SIMULATOR", "libv8-2.5.10.7-candidate.so"); 90a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#else 915ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org CheckVersion(0, 0, 0, 0, false, "0.0.0", "libv8-0.0.0.so"); 925ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org CheckVersion(0, 0, 0, 0, true, 935ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org "0.0.0 (candidate)", "libv8-0.0.0-candidate.so"); 945ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org CheckVersion(1, 0, 0, 0, false, "1.0.0", "libv8-1.0.0.so"); 955ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org CheckVersion(1, 0, 0, 0, true, 965ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org "1.0.0 (candidate)", "libv8-1.0.0-candidate.so"); 975ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org CheckVersion(1, 0, 0, 1, false, "1.0.0.1", "libv8-1.0.0.1.so"); 985ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org CheckVersion(1, 0, 0, 1, true, 995ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org "1.0.0.1 (candidate)", "libv8-1.0.0.1-candidate.so"); 1005ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org CheckVersion(2, 5, 10, 7, false, "2.5.10.7", "libv8-2.5.10.7.so"); 1015ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org CheckVersion(2, 5, 10, 7, true, 1025ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org "2.5.10.7 (candidate)", "libv8-2.5.10.7-candidate.so"); 103a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#endif 1045ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org} 105