aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJeffrey Yasskin <[email protected]>2010-07-24 16:01:34 -0700
committerGraydon Hoare <[email protected]>2010-08-06 17:25:27 -0700
commit581a95a804f77259153c030d39f861282b468612 (patch)
tree9b31cad6fe2ac9107a99baa70c4872666a1b7188 /src
parentChange the destructor-ordering test to use channels instead of a shared mutab... (diff)
downloadrust-581a95a804f77259153c030d39f861282b468612.tar.xz
rust-581a95a804f77259153c030d39f861282b468612.zip
Add an int->str conversion function.
The test currently fails because string equality isn't implemented.
Diffstat (limited to 'src')
-rw-r--r--src/Makefile2
-rw-r--r--src/lib/_int.rs20
-rw-r--r--src/lib/_io.rs4
-rw-r--r--src/test/run-pass/int-lib.rs15
4 files changed, 29 insertions, 12 deletions
diff --git a/src/Makefile b/src/Makefile
index aaf2e94f..792eeec0 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -395,6 +395,7 @@ TEST_XFAILS_X86 := $(TASK_XFAILS) \
test/run-pass/fn-lval.rs \
test/run-pass/generic-fn-infer.rs \
test/run-pass/generic-recursive-tag.rs \
+ test/run-pass/int-lib.rs \
test/run-pass/iter-ret.rs \
test/run-pass/lib-deque.rs \
test/run-pass/lib-map.rs \
@@ -464,6 +465,7 @@ TEST_XFAILS_LLVM := $(TASK_XFAILS) \
import.rs \
inner-module.rs \
integral-indexing.rs \
+ int-lib.rs \
iter-range.rs \
iter-ret.rs \
large-records.rs \
diff --git a/src/lib/_int.rs b/src/lib/_int.rs
index 03017259..e76c2bf5 100644
--- a/src/lib/_int.rs
+++ b/src/lib/_int.rs
@@ -45,7 +45,7 @@ fn next_power_of_two(uint n) -> uint {
ret tmp + 1u;
}
-fn uto_string(mutable uint n, uint radix) -> str
+fn uto_str(mutable uint n, uint radix) -> str
{
check (0u < radix && radix <= 16u);
fn digit(uint n) -> str {
@@ -60,12 +60,12 @@ fn uto_string(mutable uint n, uint radix) -> str
case (7u) { ret "7"; }
case (8u) { ret "8"; }
case (9u) { ret "9"; }
- case (10u) { ret "A"; }
- case (11u) { ret "B"; }
- case (12u) { ret "C"; }
- case (13u) { ret "D"; }
- case (14u) { ret "E"; }
- case (15u) { ret "F"; }
+ case (10u) { ret "a"; }
+ case (11u) { ret "b"; }
+ case (12u) { ret "c"; }
+ case (13u) { ret "d"; }
+ case (14u) { ret "e"; }
+ case (15u) { ret "f"; }
}
}
@@ -79,12 +79,12 @@ fn uto_string(mutable uint n, uint radix) -> str
ret s;
}
-fn to_string(mutable int n, uint radix) -> str
+fn to_str(mutable int n, uint radix) -> str
{
check (0u < radix && radix <= 16u);
if (n < 0) {
- ret "-" + uto_string((-n) as uint, radix);
+ ret "-" + uto_str((-n) as uint, radix);
} else {
- ret uto_string(n as uint, radix);
+ ret uto_str(n as uint, radix);
}
}
diff --git a/src/lib/_io.rs b/src/lib/_io.rs
index dbd60e63..93d06d41 100644
--- a/src/lib/_io.rs
+++ b/src/lib/_io.rs
@@ -125,8 +125,8 @@ fn file_writer(str path,
{
unsafe obj fw(buf_writer out) {
fn write_str(str s) { out.write(_str.bytes(s)); }
- fn write_int(int n) { out.write(_str.bytes(_int.to_string(n, 10u))); }
- fn write_uint(uint n) { out.write(_str.bytes(_int.uto_string(n, 10u))); }
+ fn write_int(int n) { out.write(_str.bytes(_int.to_str(n, 10u))); }
+ fn write_uint(uint n) { out.write(_str.bytes(_int.uto_str(n, 10u))); }
}
ret fw(new_buf_writer(path, flags));
}
diff --git a/src/test/run-pass/int-lib.rs b/src/test/run-pass/int-lib.rs
new file mode 100644
index 00000000..ce39de43
--- /dev/null
+++ b/src/test/run-pass/int-lib.rs
@@ -0,0 +1,15 @@
+use std;
+
+import std._int;
+
+fn test_to_str() {
+ check (_int.to_str(0, 10u) == "0");
+ check (_int.to_str(1, 10u) == "1");
+ check (_int.to_str(-1, 10u) == "-1");
+ check (_int.to_str(255, 16u) == "ff");
+ check (_int.to_str(-71, 36u) == "-1z");
+}
+
+fn main() {
+ test_to_str();
+}