2

テスト目的で、有効なランダムな ABN (オーストラリアのビジネス番号) を生成する必要があります。

以下は、ABN を検証する方法について説明している、私が見つけたいくつかのリンクですが、値を生成する方法がよくわかりません。

skorks.com/2011/08/even-boring-form-data-can-be-interesting-for-a-developer

ato.gov.au/businesses/content.aspx?doc=/content/13187.htm

abr.business.gov.au

search.cpan.org/~adamk/Business-AU-ABN-1.09/lib/Business/AU/ABN.pm

4

2 に答える 2

13

リンクhttp://web.archive.org/web/20130405011257/http://www.ato.gov.au/businesses/content.aspx?doc=/content/13187.htmから、できるようです:

  1. 9 つの任意の (ランダムな) 数字を選びます。

    たとえば、004085616 を選択するとします。

  2. それらの数字の前に 10 を置きます (一時的に)。

    これにより、10004085616 が得られます。

  3. http://web.archive.org/web/20130405011257/http://www.ato.gov.au/businesses/content.aspx?doc=/content/13187.htmの説明に従って重み係数を適用します。

    これにより、402 が得られます。

  4. 89で割った余りを計算します。

    残りは46です。

  5. その余りを 89 から引きます。

    結果は43です。

  6. その結果に 10 を加算して、新しい左端の桁を取得します。

    これで 53 になりました。これを 004085616 の前に挿入すると、53004085616 になります。

于 2013-03-19T15:47:49.403 に答える
3

それについて何も知らなくても、力ずくで攻撃できます。1 回限りのフィクスチャ生成であれば、これで問題ありません。テスト番号に規則があるかどうかわからないので、生成された番号の多くが実際のビジネス エンティティを表している可能性が高いと想定する必要があります。

use strictures;
use Business::AU::ABN "validate_abn";

my $desired = 10; # 1_000;
my $abn = 12_004_044_937; # Example from BAA Pod.
my @abn;
until ( not $desired )
{
    next unless my $valid = validate_abn( $abn++ );
    $desired--;
    push @abn, $valid;
}

print join($/, @abn), $/;

__END__
12 004 044 937
12 004 044 969
12 004 045 391
12 004 045 440
12 004 045 472
12 004 045 521
12 004 045 553
12 004 045 585
12 004 045 602
12 004 045 634
于 2013-03-19T15:31:37.110 に答える