Skip to content

Instantly share code, notes, and snippets.

@kakikubo
Created January 14, 2016 08:11
Show Gist options
  • Save kakikubo/ec20c078825f6b209d06 to your computer and use it in GitHub Desktop.
Save kakikubo/ec20c078825f6b209d06 to your computer and use it in GitHub Desktop.
symfony/validatorで定義するエラーコードの乱数を生成してみるテスト
#! /usr/bin/env ruby
# coding: utf-8
require 'securerandom'
HYPHEN = 0x2d
STR_LENGTH = 36
# これテストケース
# str = "51120b12-a2bc-41bf-aa53-cd73daf330d0"
def valid_length(str)
# 36バイトでないとダメ
if str.length != STR_LENGTH
raise "length muse be 36 bytes"
end
end
# 0オリジンで8,13,18,23にだけハイフンがある筈
def valid_hyphen_pos(str)
pos = 0
while pos = str.index("-", pos) do
raise "'-' must be pos in [8,13,18,23] " unless [8,13,18,23].index(pos)
pos += 1
end
end
# 既に存在する文字列はダメ(symphony/validatorで既に含まれているもの)
def valid_nonexistent_str(str)
defined_hash = [
'00559357-6170-4f29-aebd-d19330aa19cf',
'079d7420-2d13-460c-8756-de810eeb37d2',
'11884038-3312-4ae5-9d04-699f782130c7',
'11edd7eb-5872-4b6e-9f12-89923999fd0e',
'164ef693-2b9d-46de-ad7f-836201f0c2db',
'183ad2de-533d-4796-a439-6d3c3852b549',
'1a9da513-2640-4f84-9b6a-4d99dcddc628',
'1ce76f8d-3c1f-451c-9e62-fe9c3ed486ae',
'21ba13b4-b185-4882-ac6f-d147355987eb',
'23d21cea-da99-453d-98b1-a7d916fbb339',
'2881c032-660f-46b6-8153-d352d9706640',
'2983286f-8134-4693-957a-1ec4ef887b15',
'2a8cc50f-58a2-4536-875e-060a2ce69ed5',
'2beabf1c-54c0-4882-a928-05249b26e23b',
'2d28afcb-e32e-45fb-a815-01c431a86a69',
'2fa2158c-2a7f-484b-98aa-975522539ff8',
'3171387d-f80a-47b3-bd6e-60598545316a',
'35e6a710-aa2e-4719-b58e-24b35749b767',
'37cef893-5871-464e-8b12-7fb79324833c',
'3c184ce5-b31d-4de7-8b76-326da7b2be93',
'478618a7-95ba-473d-9101-cabd45e49115',
'494897dd-36f8-4d31-8923-71a8d5f3000d',
'4aaac518-0dda-4129-a6d9-e216b9b454a0',
'4d760774-3f50-4cd5-a6d5-b10a3299d8d3',
'51120b12-a2bc-41bf-aa53-cd73daf330d0',
'57c2f299-1154-4870-89bb-ef3b1f5ad229',
'59b8c6ef-bcf2-4ceb-afff-4642ed92f12e',
'5d41425b-facb-47f7-a55a-de9fbe45cb46',
'5d743385-9775-4aa5-8ff5-495fb1e60137',
'5e797c9d-74f7-4098-baa3-94390c447b27',
'60d2f30b-8cfa-4372-b155-9656634de120',
'65608156-77da-4c79-a88c-02ef6d18c782',
'66dad313-af0b-4214-8566-6c799be9789c',
'69819696-02ac-4a99-9ff0-14e127c4d1bc',
'69945ac1-2db4-405f-bec7-d2772f73df52',
'6a20dd3d-f463-4460-8e7b-18a1b98abbfb',
'6b3befbc-2f01-4ddf-be21-b57898905284',
'6d55c3f4-e58e-4fe3-91ee-74b492199956',
'6f895685-7cf2-4d65-b3da-9029c5581d88',
'70cafca6-168f-41c9-8c8c-4e47a52be643',
'744f00bc-4389-4c74-92de-9a43cde55534',
'756b1212-697c-468d-a9ad-50dd783bb169',
'76454e69-502c-46c5-9643-f447d837c4d5',
'7703c766-b5d5-4cef-ace7-ae0dd82304e9',
'778b7ae0-84d3-481a-9dec-35fdb64b1d78',
'7b6dd393-7523-4a6c-b84d-72b91bba5e1a',
'7da53a8b-56f3-4288-bb3e-ee9ede4ef9a1',
'7efae81c-4877-47ba-aa65-d01ccb0d4645',
'7f87163d-878f-47f5-99ba-a8eb723a1ab2',
'8532f9e1-84b2-4d67-8989-0818bc38533b',
'88e5e319-0aeb-4979-a27e-3d9ce0c16166',
'8d3d85e4-784f-4719-a5bc-d9e40d45a3a5',
'8e179f1b-97aa-4560-a02f-2a8b42e49df7',
'8f900c12-61bd-455d-9398-996cd040f7f0',
'949acbb0-8ef5-43ed-a0e9-032dfd08ae45',
'98469c83-0309-4f5d-bf95-a496dcaa869c',
'9afbd561-4f90-4a27-be62-1780fc43604a',
'9bd98e49-211c-433f-8630-fd1c2d0f08c3',
'9d27b2bb-f755-4fbf-b725-39b1edbdebdf',
'9ff3fdc4-b214-49db-8718-39c315e33d45',
'a0af4293-1f1a-4a1c-a328-979cba6182a2',
'a2ad9231-e827-485f-8a1e-ef4d9a6d5c2e',
'a663d266-37c2-4ece-a914-ae891940c588',
'a8faedbf-1c2f-4695-8d22-55783be8efed',
'aa2e33da-25c8-4d76-8c6c-812f02ea89dd',
'aa314679-dac9-4f54-bf97-b2049df8f2a3',
'ad32d13f-c3d4-423b-909a-857b961eb720',
'ad9a9798-7a99-4df7-8ce9-46e416a1e60b',
'aef0cb6a-c07f-4894-bc08-1781420d7b4c',
'b0f92dbc-667c-48de-b526-ad9586d43e85',
'b1b427ae-9f6f-41b0-aa9b-84511fbb3c5b',
'b9401321-f9bf-4dcb-83c1-f31094440795',
'ba785a8c-82cb-4283-967c-3cf342181b40',
'bd79c0ab-ddba-46cc-a703-a7a4b08de310',
'bef8e338-6ae5-4caf-b8e2-50e7b0579e69',
'bf447c1c-0266-4e10-9c6c-573df282e413',
'c1051bb4-d103-4f74-8988-acbcafc7fdc3',
'c20c92a4-5bfa-4202-9477-28e800e0f6ff',
'c8d318f1-2ecc-41ba-b983-df70d225cf5a',
'd2a3fb6e-7ddc-4210-8fbf-2ab345ce1998',
'd52afa47-620d-4d99-9f08-f4d85b36e33c',
'd53a91b0-def3-426a-83d7-269da7ab4200',
'd94b19cc-114f-4f44-9cc4-4138e80a87b9',
'de1e3db3-5ed4-4941-aae4-59f3667cc3a3',
'de78ee2c-bd50-44e2-aec8-3d8228aeadb9',
'df8637af-d466-48c6-a59d-e7126250a654',
'dfad6d23-1b74-4374-929b-5cbb56fc0d9e',
'e2c259f3-4b46-48e6-b72e-891658158ec8',
'ea4e51d1-3342-48bd-87f1-9e672cd90cad',
'ee65fec4-9a20-4202-9f39-ca558cd7bdf7',
'f424c529-7add-4417-8f2d-4b656e4833e2',
'f4bf62fe-03ec-42af-a53b-68e21b1e7274',
'fa54a457-f042-441f-89c4-066ee5bdd3e1',
]
defined_hash.each do |h|
if h == str
raise "this str is already exists " + str
end
end
end
randstr = SecureRandom.hex(18) # これで36バイトになる
randstr.setbyte( 8, HYPHEN)
randstr.setbyte(13, HYPHEN)
randstr.setbyte(18, HYPHEN)
randstr.setbyte(23, HYPHEN)
valid_length(randstr)
valid_hyphen_pos(randstr)
valid_nonexistent_str(randstr)
puts randstr
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment