1266987Smarkj/* 2266987Smarkj * This file and its contents are supplied under the terms of the 3266987Smarkj * Common Development and Distribution License ("CDDL"), version 1.0. 4266987Smarkj * You may only use this file in accordance with the terms of version 5266987Smarkj * 1.0 of the CDDL. 6266987Smarkj * 7266987Smarkj * A full copy of the text of the CDDL should have accompanied this 8266987Smarkj * source. A copy of the CDDL is also available via the Internet at 9266987Smarkj * http://www.illumos.org/license/CDDL. 10266987Smarkj */ 11266987Smarkj 12266987Smarkj/* 13266987Smarkj * Copyright (c) 2012, Joyent, Inc. All rights reserved. 14266987Smarkj */ 15266987Smarkj 16266987Smarkj/* 17266987Smarkj * ASSERTION: 18266987Smarkj * Test the strtoll() subroutine. 19266987Smarkj * 20266987Smarkj * SECTION: Actions and Subroutines/strtoll() 21266987Smarkj */ 22266987Smarkj 23266987Smarkj#pragma D option quiet 24266987Smarkj 25266987SmarkjBEGIN 26266987Smarkj{ 27266987Smarkj 28266987Smarkj /* minimum base (2) and maximum base (36): */ 29266987Smarkj printf("%d\n", strtoll("0", 2)); 30266987Smarkj printf("%d\n", strtoll("1", 36)); 31266987Smarkj 32266987Smarkj /* simple tests: */ 33266987Smarkj printf("%d\n", strtoll("0x20", 16)); 34266987Smarkj printf("%d\n", strtoll("-32", 10)); 35266987Smarkj printf("%d\n", strtoll("010", 8)); 36266987Smarkj printf("%d\n", strtoll("101010", 2)); 37266987Smarkj 38266987Smarkj /* INT64_MIN and INT64_MAX: */ 39266987Smarkj printf("%d\n", strtoll("9223372036854775807")); 40266987Smarkj printf("%d\n", strtoll("-9223372036854775808")); 41266987Smarkj printf("%d\n", strtoll("0777777777777777777777", 8)); 42266987Smarkj printf("%d\n", strtoll("-01000000000000000000000", 8)); 43266987Smarkj 44266987Smarkj /* wrapping: */ 45266987Smarkj printf("%d\n", strtoll("1000000000000000000000", 8)); 46266987Smarkj printf("%d\n", strtoll("-1000000000000000000001", 8)); 47266987Smarkj 48266987Smarkj /* hex without prefix: */ 49266987Smarkj printf("%d\n", strtoll("baddcafe", 16)); 50266987Smarkj 51266987Smarkj /* stopping at first out-of-base character: */ 52266987Smarkj printf("%d\n", strtoll("12j", 10)); 53266987Smarkj printf("%d\n", strtoll("102", 2)); 54266987Smarkj 55266987Smarkj /* base 36: */ 56266987Smarkj printf("%d\n", strtoll("-0DTrace4EverZ", 36)); 57266987Smarkj 58266987Smarkj /* base 10 is assumed: */ 59266987Smarkj printf("%d\n", strtoll("1985")); 60266987Smarkj printf("%d\n", strtoll("-2012")); 61266987Smarkj 62266987Smarkj /* empty string: */ 63266987Smarkj printf("%d\n", strtoll("")); 64266987Smarkj 65266987Smarkj exit(0); 66266987Smarkj} 67