package org.nutz.lang.random;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.UUID;
import org.junit.Test;
public class RTest {
@Test
public void test_uu64_and_uu16() {
for (int i = 0; i < 100000; i++) {
UUID uu = UUID.randomUUID();
String uu64 = R.UU64(uu);
String uu16 = R.UU16(uu);
UUID reUU = R.fromUU64(uu64);
String re16 = R.UU16FromUU64(uu64);
assertTrue(uu.equals(reUU));
assertTrue(uu16.equals(re16));
}
}
@Test
public void test_uu32() {
for (int i = 0; i < 100000; i++) {
UUID uuid = UUID.randomUUID();
// System.out.println(uuid);
// System.out.println(R.UU32(uuid));
// System.out.println(R.fromUU32(R.UU32(uuid)));
assertEquals(uuid, R.fromUU32(R.UU32(uuid)));
}
}
@Test
public void test_captcha_length() throws Exception {
assertEquals(0, R.captchaNumber(0).length());
assertEquals(2, R.captchaNumber(2).length());
assertEquals(4, R.captchaNumber(4).length());
assertEquals(10, R.captchaNumber(10).length());
assertEquals(2, R.captchaChar(2).length());
assertEquals(4, R.captchaChar(4).length());
assertEquals(10, R.captchaChar(10).length());
}
@Test
public void test_captcha_content() throws Exception {
String c1 = R.captchaNumber(100);
assertTrue(hasNumber(c1));
assertFalse(hasUpperLetter(c1));
assertFalse(hasLowerLetter(c1));
String c2 = R.captchaChar(1000);
assertTrue(hasNumber(c2));
assertTrue(hasLowerLetter(c2));
assertFalse(hasUpperLetter(c2));
// 1000个字符里肯定得有个大写的
String c3 = R.captchaChar(1000, true);
assertTrue(hasNumber(c3));
assertTrue(hasLowerLetter(c3));
assertTrue(hasUpperLetter(c3));
}
// 48~57
public boolean hasNumber(String str) {
for (int i = 0; i < str.length(); i++) {
int c = (int) str.charAt(i);
if (c >= 48 && c <= 57) {
return true;
}
}
return false;
}
// 65-90
public boolean hasUpperLetter(String str) {
for (int i = 0; i < str.length(); i++) {
int c = (int) str.charAt(i);
if (c >= 65 && c <= 90) {
return true;
}
}
return false;
}
// 97~122
public boolean hasLowerLetter(String str) {
for (int i = 0; i < str.length(); i++) {
int c = (int) str.charAt(i);
if (c >= 97 && c <= 122) {
return true;
}
}
return false;
}
}