From f0e859ba3033e54aefd71bf194da574593bc1631 Mon Sep 17 00:00:00 2001 From: PE LETT <1882173+Busyvar@users.noreply.github.com> Date: Mon, 2 Jan 2023 21:29:02 +0100 Subject: [PATCH 1/4] feat(locale): extend english company (#1701) --- src/locales/en/company/bs_noun.ts | 6 +----- test/__snapshots__/company.spec.ts.snap | 8 ++++---- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/locales/en/company/bs_noun.ts b/src/locales/en/company/bs_noun.ts index bbeea5f6ca3..b62bdbef218 100644 --- a/src/locales/en/company/bs_noun.ts +++ b/src/locales/en/company/bs_noun.ts @@ -1,6 +1,5 @@ export default [ 'synergies', - 'web-readiness', 'paradigms', 'markets', 'partnerships', @@ -12,14 +11,11 @@ export default [ 'communities', 'ROI', 'solutions', - 'e-tailers', - 'e-services', 'action-items', 'portals', 'niches', 'technologies', 'content', - 'vortals', 'supply-chains', 'convergence', 'relationships', @@ -29,7 +25,6 @@ export default [ 'e-commerce', 'systems', 'bandwidth', - 'infomediaries', 'models', 'mindshare', 'deliverables', @@ -44,4 +39,5 @@ export default [ 'web services', 'methodologies', 'blockchains', + 'lifetime value', ]; diff --git a/test/__snapshots__/company.spec.ts.snap b/test/__snapshots__/company.spec.ts.snap index 446376372dc..97697afa413 100644 --- a/test/__snapshots__/company.spec.ts.snap +++ b/test/__snapshots__/company.spec.ts.snap @@ -1,12 +1,12 @@ // Vitest Snapshot v1 -exports[`company > 42 > bs 1`] = `"seize impactful web services"`; +exports[`company > 42 > bs 1`] = `"seize impactful methodologies"`; exports[`company > 42 > bsAdjective 1`] = `"dynamic"`; exports[`company > 42 > bsBuzz 1`] = `"seize"`; -exports[`company > 42 > bsNoun 1`] = `"portals"`; +exports[`company > 42 > bsNoun 1`] = `"technologies"`; exports[`company > 42 > catchPhrase 1`] = `"Implemented responsive throughput"`; @@ -29,13 +29,13 @@ exports[`company > 42 > suffixes 1`] = ` ] `; -exports[`company > 1211 > bs 1`] = `"cultivate bleeding-edge functionalities"`; +exports[`company > 1211 > bs 1`] = `"cultivate bleeding-edge experiences"`; exports[`company > 1211 > bsAdjective 1`] = `"plug-and-play"`; exports[`company > 1211 > bsBuzz 1`] = `"cultivate"`; -exports[`company > 1211 > bsNoun 1`] = `"experiences"`; +exports[`company > 1211 > bsNoun 1`] = `"methodologies"`; exports[`company > 1211 > catchPhrase 1`] = `"Up-sized high-level success"`; From b8c522ea7ecce63f64392edcbf181cb532828cfb Mon Sep 17 00:00:00 2001 From: Matt Mayer Date: Tue, 3 Jan 2023 04:35:16 +0700 Subject: [PATCH 2/4] chore(locale): split es_MX names into female/male (#1704) --- src/locales/es_MX/person/female_first_name.ts | 163 +++++++++ src/locales/es_MX/person/first_name.ts | 310 +----------------- src/locales/es_MX/person/index.ts | 4 + src/locales/es_MX/person/male_first_name.ts | 141 ++++++++ 4 files changed, 316 insertions(+), 302 deletions(-) create mode 100644 src/locales/es_MX/person/female_first_name.ts create mode 100644 src/locales/es_MX/person/male_first_name.ts diff --git a/src/locales/es_MX/person/female_first_name.ts b/src/locales/es_MX/person/female_first_name.ts new file mode 100644 index 00000000000..7c0c3ba5f22 --- /dev/null +++ b/src/locales/es_MX/person/female_first_name.ts @@ -0,0 +1,163 @@ +export default [ + 'Abigail', + 'Abril', + 'Adela', + 'Adriana', + 'Alejandra', + 'Alexa', + 'Alicia', + 'Alondra Romina', + 'Amalia', + 'Ana Luisa', + 'Ana María', + 'Ana Sofía', + 'Ana Victoria', + 'Ana', + 'Andrea', + 'Ángela', + 'Anita', + 'Antonia', + 'Araceli', + 'Ariadna', + 'Barbara', + 'Beatriz', + 'Berta', + 'Blanca', + 'Camila', + 'Caridad', + 'Carla', + 'Carlota', + 'Carmen', + 'Carolina', + 'Catalina', + 'Cecilia', + 'Clara', + 'Claudia', + 'Concepción', + 'Conchita', + 'Cristina', + 'Daniela', + 'Débora', + 'Diana', + 'Dolores', + 'Dorotea', + 'Dulce María', + 'Elena', + 'Elisa', + 'Elizabeth', + 'Eloisa', + 'Elsa', + 'Elvira', + 'Emilia', + 'Emily', + 'Esmeralda', + 'Esperanza', + 'Estefanía', + 'Estela', + 'Ester', + 'Eva', + 'Evelyn', + 'Fatima', + 'Florencia', + 'Francisca', + 'Gabriela', + 'Gloria', + 'Graciela', + 'Guadalupe', + 'Guillermina', + 'Inés', + 'Irene', + 'Isabel', + 'Isabela', + 'Ivanna', + 'Jazmin', + 'Jennifer', + 'Jimena', + 'Josefina', + 'Juana', + 'Julia', + 'Julieta', + 'Kimberly', + 'Laura', + 'Leonor', + 'Leticia', + 'Lilia', + 'Liliana', + 'Lizbeth', + 'Lola', + 'Lorena', + 'Lourdes', + 'Lucia', + 'Luisa', + 'Luz', + 'Magdalena', + 'Manuela', + 'Marcela', + 'Margarita', + 'María Cristina', + 'María de Jesús', + 'María de los Ángeles', + 'María del Carmen', + 'María Elena', + 'María Eugenia', + 'María Fernanda', + 'María Guadalupe', + 'María José', + 'María Luisa', + 'María Soledad', + 'María Teresa', + 'María', + 'Mariana', + 'Maricarmen', + 'Marilu', + 'Marisol', + 'Marta', + 'Mayte', + 'Melany', + 'Melissa', + 'Mercedes', + 'Micaela', + 'Miranda', + 'Mónica', + 'Monserrat', + 'Naomi', + 'Natalia', + 'Nicole', + 'Norma', + 'Olivia', + 'Paola', + 'Patricia', + 'Paulina', + 'Pilar', + 'Ramona', + 'Raquel', + 'Rebeca', + 'Regina', + 'Reina', + 'Renata', + 'Rocio', + 'Rosa María', + 'Rosa', + 'Rosalia', + 'Rosario', + 'Sara', + 'Silvia', + 'Sofia', + 'Soledad', + 'Sonia', + 'Susana', + 'Teresa', + 'Valentina', + 'Valeria', + 'Vanessa', + 'Verónica', + 'Victoria', + 'Virginia', + 'Ximena Guadalupe', + 'Ximena', + 'Xochitl', + 'Yamileth', + 'Yaretzi', + 'Yolanda', + 'Zoe', +]; diff --git a/src/locales/es_MX/person/first_name.ts b/src/locales/es_MX/person/first_name.ts index 5186f14b3f7..40a647ec054 100644 --- a/src/locales/es_MX/person/first_name.ts +++ b/src/locales/es_MX/person/first_name.ts @@ -1,302 +1,8 @@ -export default [ - 'Aarón', - 'Abraham', - 'Adán', - 'Agustín', - 'Alan', - 'Alberto', - 'Alejandro', - 'Alexander', - 'Alexis', - 'Alfonso', - 'Alfredo', - 'Andrés', - 'Ángel Daniel', - 'Ángel Gabriel', - 'Antonio', - 'Armando', - 'Arturo', - 'Axel', - 'Benito', - 'Benjamín', - 'Bernardo', - 'Brandon', - 'Brayan', - 'Carlos', - 'César', - 'Claudio', - 'Clemente', - 'Cristian', - 'Cristobal', - 'Damián', - 'Daniel', - 'David', - 'Diego', - 'Eduardo', - 'Elías', - 'Emiliano', - 'Emilio', - 'Emmanuel', - 'Enrique', - 'Erick', - 'Ernesto', - 'Esteban', - 'Federico', - 'Felipe', - 'Fernando', - 'Fernando Javier', - 'Francisco', - 'Francisco Javier', - 'Gabriel', - 'Gael', - 'Gerardo', - 'Germán', - 'Gilberto', - 'Gonzalo', - 'Gregorio', - 'Guillermo', - 'Gustavo', - 'Hernán', - 'Homero', - 'Horacio', - 'Hugo', - 'Ignacio', - 'Iker', - 'Isaac', - 'Isaias', - 'Israel', - 'Ivan', - 'Jacobo', - 'Jaime', - 'Javier', - 'Jerónimo', - 'Jesús', - 'Joaquín', - 'Jorge', - 'Jorge Luis', - 'José', - 'José Antonio', - 'Jose Daniel', - 'José Eduardo', - 'José Emilio', - 'José Luis', - 'José María', - 'José Miguel', - 'Juan', - 'Juan Carlos', - 'Juan Manuel', - 'Juan Pablo', - 'Julio', - 'Julio César', - 'Kevin', - 'Leonardo', - 'Lorenzo', - 'Lucas', - 'Luis', - 'Luis Ángel', - 'Luis Fernando', - 'Luis Gabino', - 'Luis Miguel', - 'Manuel', - 'Marco Antonio', - 'Marcos', - 'Mariano', - 'Mario', - 'Martín', - 'Mateo', - 'Matías', - 'Mauricio', - 'Maximiliano', - 'Miguel', - 'Miguel Ángel', - 'Nicolás', - 'Octavio', - 'Óscar', - 'Pablo', - 'Patricio', - 'Pedro', - 'Rafael', - 'Ramiro', - 'Ramón', - 'Raúl', - 'Ricardo', - 'Roberto', - 'Rodrigo', - 'Rubén', - 'Salvador', - 'Samuel', - 'Sancho', - 'Santiago', - 'Saúl', - 'Sebastian', - 'Sergio', - 'Tadeo', - 'Teodoro', - 'Timoteo', - 'Tomás', - 'Uriel', - 'Vicente', - 'Víctor', - 'Victor Manuel', - 'Adriana', - 'Alejandra', - 'Alicia', - 'Amalia', - 'Ana', - 'Ana Luisa', - 'Ana María', - 'Andrea', - 'Ángela', - 'Anita', - 'Antonia', - 'Araceli', - 'Ariadna', - 'Barbara', - 'Beatriz', - 'Berta', - 'Blanca', - 'Caridad', - 'Carla', - 'Carlota', - 'Carmen', - 'Carolina', - 'Catalina', - 'Cecilia', - 'Clara', - 'Claudia', - 'Concepción', - 'Conchita', - 'Cristina', - 'Daniela', - 'Débora', - 'Diana', - 'Dolores', - 'Dorotea', - 'Elena', - 'Elisa', - 'Elizabeth', - 'Eloisa', - 'Elsa', - 'Elvira', - 'Emilia', - 'Esperanza', - 'Estela', - 'Ester', - 'Eva', - 'Florencia', - 'Francisca', - 'Gabriela', - 'Gloria', - 'Graciela', - 'Guadalupe', - 'Guillermina', - 'Inés', - 'Irene', - 'Isabel', - 'Isabela', - 'Josefina', - 'Juana', - 'Julia', - 'Laura', - 'Leonor', - 'Leticia', - 'Lilia', - 'Lola', - 'Lorena', - 'Lourdes', - 'Lucia', - 'Luisa', - 'Luz', - 'Magdalena', - 'Manuela', - 'Marcela', - 'Margarita', - 'María', - 'María Cristina', - 'María de Jesús', - 'María de los Ángeles', - 'María del Carmen', - 'María Elena', - 'María Eugenia', - 'María Guadalupe', - 'María José', - 'María Luisa', - 'María Soledad', - 'María Teresa', - 'Mariana', - 'Maricarmen', - 'Marilu', - 'Marisol', - 'Marta', - 'Mayte', - 'Mercedes', - 'Micaela', - 'Mónica', - 'Natalia', - 'Norma', - 'Olivia', - 'Patricia', - 'Pilar', - 'Ramona', - 'Raquel', - 'Rebeca', - 'Reina', - 'Rocio', - 'Rosa', - 'Rosa María', - 'Rosalia', - 'Rosario', - 'Sara', - 'Silvia', - 'Sofia', - 'Soledad', - 'Sonia', - 'Susana', - 'Teresa', - 'Verónica', - 'Victoria', - 'Virginia', - 'Xochitl', - 'Yolanda', - 'Abigail', - 'Abril', - 'Adela', - 'Alexa', - 'Alondra Romina', - 'Ana Sofía', - 'Ana Victoria', - 'Camila', - 'Dulce María', - 'Emily', - 'Esmeralda', - 'Estefanía', - 'Evelyn', - 'Fatima', - 'Ivanna', - 'Jazmin', - 'Jennifer', - 'Jimena', - 'Julieta', - 'Kimberly', - 'Liliana', - 'Lizbeth', - 'María Fernanda', - 'Melany', - 'Melissa', - 'Miranda', - 'Monserrat', - 'Naomi', - 'Nicole', - 'Paola', - 'Paulina', - 'Regina', - 'Renata', - 'Valentina', - 'Valeria', - 'Vanessa', - 'Ximena', - 'Ximena Guadalupe', - 'Yamileth', - 'Yaretzi', - 'Zoe', -]; +// We don't have a generic first name list for this locale +// So simply concatenate male and female lists and remove any duplicates +// This avoids falling back to fallback locale +import { mergeArrays } from './../../../internal/merge'; +import female_first_name from './female_first_name'; +import male_first_name from './male_first_name'; + +export default mergeArrays(female_first_name, male_first_name); diff --git a/src/locales/es_MX/person/index.ts b/src/locales/es_MX/person/index.ts index 48c4cb2faba..581c3d68a0d 100644 --- a/src/locales/es_MX/person/index.ts +++ b/src/locales/es_MX/person/index.ts @@ -3,16 +3,20 @@ * Run 'pnpm run generate:locales' to update. */ import type { PersonDefinitions } from '../../..'; +import female_first_name from './female_first_name'; import first_name from './first_name'; import last_name from './last_name'; +import male_first_name from './male_first_name'; import name_ from './name'; import prefix from './prefix'; import suffix from './suffix'; import title from './title'; const person: PersonDefinitions = { + female_first_name, first_name, last_name, + male_first_name, name: name_, prefix, suffix, diff --git a/src/locales/es_MX/person/male_first_name.ts b/src/locales/es_MX/person/male_first_name.ts new file mode 100644 index 00000000000..a43d2b8ae0b --- /dev/null +++ b/src/locales/es_MX/person/male_first_name.ts @@ -0,0 +1,141 @@ +export default [ + 'Aarón', + 'Abraham', + 'Adán', + 'Agustín', + 'Alan', + 'Alberto', + 'Alejandro', + 'Alexander', + 'Alexis', + 'Alfonso', + 'Alfredo', + 'Andrés', + 'Ángel Daniel', + 'Ángel Gabriel', + 'Antonio', + 'Armando', + 'Arturo', + 'Axel', + 'Benito', + 'Benjamín', + 'Bernardo', + 'Brandon', + 'Brayan', + 'Carlos', + 'César', + 'Claudio', + 'Clemente', + 'Cristian', + 'Cristobal', + 'Damián', + 'Daniel', + 'David', + 'Diego', + 'Eduardo', + 'Elías', + 'Emiliano', + 'Emilio', + 'Emmanuel', + 'Enrique', + 'Erick', + 'Ernesto', + 'Esteban', + 'Federico', + 'Felipe', + 'Fernando', + 'Fernando Javier', + 'Francisco', + 'Francisco Javier', + 'Gabriel', + 'Gael', + 'Gerardo', + 'Germán', + 'Gilberto', + 'Gonzalo', + 'Gregorio', + 'Guillermo', + 'Gustavo', + 'Hernán', + 'Homero', + 'Horacio', + 'Hugo', + 'Ignacio', + 'Iker', + 'Isaac', + 'Isaias', + 'Israel', + 'Ivan', + 'Jacobo', + 'Jaime', + 'Javier', + 'Jerónimo', + 'Jesús', + 'Joaquín', + 'Jorge', + 'Jorge Luis', + 'José', + 'José Antonio', + 'Jose Daniel', + 'José Eduardo', + 'José Emilio', + 'José Luis', + 'José María', + 'José Miguel', + 'Juan', + 'Juan Carlos', + 'Juan Manuel', + 'Juan Pablo', + 'Julio', + 'Julio César', + 'Kevin', + 'Leonardo', + 'Lorenzo', + 'Lucas', + 'Luis', + 'Luis Ángel', + 'Luis Fernando', + 'Luis Gabino', + 'Luis Miguel', + 'Manuel', + 'Marco Antonio', + 'Marcos', + 'Mariano', + 'Mario', + 'Martín', + 'Mateo', + 'Matías', + 'Mauricio', + 'Maximiliano', + 'Miguel', + 'Miguel Ángel', + 'Nicolás', + 'Octavio', + 'Óscar', + 'Pablo', + 'Patricio', + 'Pedro', + 'Rafael', + 'Ramiro', + 'Ramón', + 'Raúl', + 'Ricardo', + 'Roberto', + 'Rodrigo', + 'Rubén', + 'Salvador', + 'Samuel', + 'Sancho', + 'Santiago', + 'Saúl', + 'Sebastian', + 'Sergio', + 'Tadeo', + 'Teodoro', + 'Timoteo', + 'Tomás', + 'Uriel', + 'Vicente', + 'Víctor', + 'Victor Manuel', +]; From 84b3c20c7d4459e820bbce65b64201b29283b149 Mon Sep 17 00:00:00 2001 From: Matt Mayer Date: Tue, 3 Jan 2023 14:54:21 +0700 Subject: [PATCH 3/4] chore(locale): split ne first_names to female and male (#1705) --- src/locales/ne/person/female_first_name.ts | 20 +++++++ src/locales/ne/person/first_name.ts | 65 +++------------------- src/locales/ne/person/index.ts | 4 ++ src/locales/ne/person/male_first_name.ts | 39 +++++++++++++ 4 files changed, 71 insertions(+), 57 deletions(-) create mode 100644 src/locales/ne/person/female_first_name.ts create mode 100644 src/locales/ne/person/male_first_name.ts diff --git a/src/locales/ne/person/female_first_name.ts b/src/locales/ne/person/female_first_name.ts new file mode 100644 index 00000000000..464a25884ca --- /dev/null +++ b/src/locales/ne/person/female_first_name.ts @@ -0,0 +1,20 @@ +export default [ + 'Ajita', + 'Amita', + 'Ashmi', + 'Asmita', + 'Bina', + 'Deepika', + 'Laxmi', + 'Manisha', + 'Nikita', + 'Pooja', + 'Rajina', + 'Ratna', + 'Sarita', + 'Shilpa', + 'Shirisha', + 'Shristi', + 'Sunita', + 'Susan', +]; diff --git a/src/locales/ne/person/first_name.ts b/src/locales/ne/person/first_name.ts index 997cf459f2c..40a647ec054 100644 --- a/src/locales/ne/person/first_name.ts +++ b/src/locales/ne/person/first_name.ts @@ -1,57 +1,8 @@ -export default [ - 'Aarav', - 'Ajita', - 'Amit', - 'Amita', - 'Amrit', - 'Arijit', - 'Ashmi', - 'Asmita', - 'Bibek', - 'Bijay', - 'Bikash', - 'Bina', - 'Bishal', - 'Bishnu', - 'Buddha', - 'Deepika', - 'Dipendra', - 'Gagan', - 'Ganesh', - 'Khem', - 'Krishna', - 'Laxmi', - 'Manisha', - 'Nabin', - 'Nikita', - 'Niraj', - 'Nischal', - 'Padam', - 'Pooja', - 'Prabin', - 'Prakash', - 'Prashant', - 'Prem', - 'Purna', - 'Rajendra', - 'Rajina', - 'Raju', - 'Rakesh', - 'Ranjan', - 'Ratna', - 'Sagar', - 'Sandeep', - 'Sanjay', - 'Santosh', - 'Sarita', - 'Shilpa', - 'Shirisha', - 'Shristi', - 'Siddhartha', - 'Subash', - 'Sumeet', - 'Sunita', - 'Suraj', - 'Susan', - 'Sushant', -]; +// We don't have a generic first name list for this locale +// So simply concatenate male and female lists and remove any duplicates +// This avoids falling back to fallback locale +import { mergeArrays } from './../../../internal/merge'; +import female_first_name from './female_first_name'; +import male_first_name from './male_first_name'; + +export default mergeArrays(female_first_name, male_first_name); diff --git a/src/locales/ne/person/index.ts b/src/locales/ne/person/index.ts index bb956ea585c..b61cf10830a 100644 --- a/src/locales/ne/person/index.ts +++ b/src/locales/ne/person/index.ts @@ -3,12 +3,16 @@ * Run 'pnpm run generate:locales' to update. */ import type { PersonDefinitions } from '../../..'; +import female_first_name from './female_first_name'; import first_name from './first_name'; import last_name from './last_name'; +import male_first_name from './male_first_name'; const person: PersonDefinitions = { + female_first_name, first_name, last_name, + male_first_name, }; export default person; diff --git a/src/locales/ne/person/male_first_name.ts b/src/locales/ne/person/male_first_name.ts new file mode 100644 index 00000000000..99c663c895a --- /dev/null +++ b/src/locales/ne/person/male_first_name.ts @@ -0,0 +1,39 @@ +export default [ + 'Aarav', + 'Amit', + 'Amrit', + 'Arijit', + 'Bibek', + 'Bijay', + 'Bikash', + 'Bishal', + 'Bishnu', + 'Buddha', + 'Dipendra', + 'Gagan', + 'Ganesh', + 'Khem', + 'Krishna', + 'Nabin', + 'Niraj', + 'Nischal', + 'Padam', + 'Prabin', + 'Prakash', + 'Prashant', + 'Prem', + 'Purna', + 'Rajendra', + 'Raju', + 'Rakesh', + 'Ranjan', + 'Sagar', + 'Sandeep', + 'Sanjay', + 'Santosh', + 'Siddhartha', + 'Subash', + 'Sumeet', + 'Suraj', + 'Sushant', +]; From d3229fcdf28b5a1abdbc44a7bcdde934bd472bf2 Mon Sep 17 00:00:00 2001 From: Pablo Ladreyt Date: Tue, 3 Jan 2023 05:03:05 -0300 Subject: [PATCH 4/4] feat(number): add binary and octal random number generation (#1708) --- src/modules/number/index.ts | 58 ++++++++++++++++++++++ test/__snapshots__/number.spec.ts.snap | 36 ++++++++++++++ test/number.spec.ts | 68 ++++++++++++++++++++++++++ 3 files changed, 162 insertions(+) diff --git a/src/modules/number/index.ts b/src/modules/number/index.ts index 54352fcd364..6a5fd5d6f77 100644 --- a/src/modules/number/index.ts +++ b/src/modules/number/index.ts @@ -114,6 +114,64 @@ export class NumberModule { return int / factor; } + /** + * Returns a [binary](https://en.wikipedia.org/wiki/Binary_number) number. + * + * @param options Maximum value or options object. Defaults to `{}`. + * @param options.min Lower bound for generated number. Defaults to `0`. + * @param options.max Upper bound for generated number. Defaults to `1`. + * + * @throws When options define `max < min`. + * + * @example + * faker.number.binary() // '1' + * faker.number.binary(255) // '110101' + * faker.number.binary({ min: 0, max: 65535 }) // '10110101' + * + * @since 8.0.0 + */ + binary(options: number | { min?: number; max?: number } = {}): string { + if (typeof options === 'number') { + options = { max: options }; + } + + const { min = 0, max = 1 } = options; + + return this.int({ + max, + min, + }).toString(2); + } + + /** + * Returns an [octal](https://en.wikipedia.org/wiki/Octal) number. + * + * @param options Maximum value or options object. Defaults to `{}`. + * @param options.min Lower bound for generated number. Defaults to `0`. + * @param options.max Upper bound for generated number. Defaults to `7`. + * + * @throws When options define `max < min`. + * + * @example + * faker.number.octal() // '5' + * faker.number.octal(255) // '377' + * faker.number.octal({ min: 0, max: 65535 }) // '4766' + * + * @since 8.0.0 + */ + octal(options: number | { min?: number; max?: number } = {}): string { + if (typeof options === 'number') { + options = { max: options }; + } + + const { min = 0, max = 7 } = options; + + return this.int({ + max, + min, + }).toString(8); + } + /** * Returns a lowercase [hexadecimal](https://en.wikipedia.org/wiki/Hexadecimal) number. * diff --git a/test/__snapshots__/number.spec.ts.snap b/test/__snapshots__/number.spec.ts.snap index 29605f55dbb..e699dc9599f 100644 --- a/test/__snapshots__/number.spec.ts.snap +++ b/test/__snapshots__/number.spec.ts.snap @@ -14,6 +14,12 @@ exports[`number > 42 > bigInt > with options 1`] = `1n`; exports[`number > 42 > bigInt > with string value 1`] = `37n`; +exports[`number > 42 > binary > noArgs 1`] = `"0"`; + +exports[`number > 42 > binary > with options 1`] = `"100"`; + +exports[`number > 42 > binary > with value 1`] = `"0"`; + exports[`number > 42 > float > with max 1`] = `25.84`; exports[`number > 42 > float > with min 1`] = `-25.9`; @@ -36,6 +42,12 @@ exports[`number > 42 > int > with options 1`] = `4`; exports[`number > 42 > int > with value 1`] = `0`; +exports[`number > 42 > octal > noArgs 1`] = `"2"`; + +exports[`number > 42 > octal > with options 1`] = `"4"`; + +exports[`number > 42 > octal > with value 1`] = `"0"`; + exports[`number > 1211 > bigInt > noArgs 1`] = `948721906162743n`; exports[`number > 1211 > bigInt > with big options 1`] = `22017767508700414061739128n`; @@ -50,6 +62,12 @@ exports[`number > 1211 > bigInt > with options 1`] = `10n`; exports[`number > 1211 > bigInt > with string value 1`] = `24n`; +exports[`number > 1211 > binary > noArgs 1`] = `"1"`; + +exports[`number > 1211 > binary > with options 1`] = `"1010"`; + +exports[`number > 1211 > binary > with value 1`] = `"1"`; + exports[`number > 1211 > float > with max 1`] = `64.07`; exports[`number > 1211 > float > with min 1`] = `-2.07`; @@ -72,6 +90,12 @@ exports[`number > 1211 > int > with options 1`] = `10`; exports[`number > 1211 > int > with value 1`] = `1`; +exports[`number > 1211 > octal > noArgs 1`] = `"7"`; + +exports[`number > 1211 > octal > with options 1`] = `"12"`; + +exports[`number > 1211 > octal > with value 1`] = `"1"`; + exports[`number > 1337 > bigInt > noArgs 1`] = `251225403255239n`; exports[`number > 1337 > bigInt > with big options 1`] = `31258255497061442772623668n`; @@ -86,6 +110,12 @@ exports[`number > 1337 > bigInt > with options 1`] = `-15n`; exports[`number > 1337 > bigInt > with string value 1`] = `25n`; +exports[`number > 1337 > binary > noArgs 1`] = `"0"`; + +exports[`number > 1337 > binary > with options 1`] = `"10"`; + +exports[`number > 1337 > binary > with value 1`] = `"0"`; + exports[`number > 1337 > float > with max 1`] = `18.08`; exports[`number > 1337 > float > with min 1`] = `-30.74`; @@ -107,3 +137,9 @@ exports[`number > 1337 > int > noArgs 1`] = `2360108468142080`; exports[`number > 1337 > int > with options 1`] = `2`; exports[`number > 1337 > int > with value 1`] = `0`; + +exports[`number > 1337 > octal > noArgs 1`] = `"2"`; + +exports[`number > 1337 > octal > with options 1`] = `"2"`; + +exports[`number > 1337 > octal > with value 1`] = `"0"`; diff --git a/test/number.spec.ts b/test/number.spec.ts index f54804399ba..91208e00778 100644 --- a/test/number.spec.ts +++ b/test/number.spec.ts @@ -11,6 +11,8 @@ describe('number', () => { seededTests(faker, 'number', (t) => { t.describeEach( 'int', + 'binary', + 'octal', 'hex' )((t) => { t.it('noArgs') @@ -240,6 +242,72 @@ describe('number', () => { }); }); + describe('binary', () => { + it('generates single binary character when no additional argument was provided', () => { + const binary = faker.number.binary(); + expect(binary).toBeTypeOf('string'); + expect(binary).toHaveLength(1); + expect(binary).toMatch(/^[01]$/); + }); + + it('generates a random binary string with a custom max value', () => { + const binary = faker.number.binary(5); + const binaryNum = parseInt(binary, 2); + expect(binaryNum).toBeLessThanOrEqual(5); + expect(binary).toMatch(/^[01]+$/); + }); + + it('generates a random binary in a specific range', () => { + const binary = faker.number.binary({ min: 15, max: 255 }); + + const binaryNum = parseInt(binary, 2); + expect(binaryNum).toBeLessThanOrEqual(255); + expect(binaryNum).greaterThanOrEqual(15); + }); + + it('should throw when min > max', () => { + const min = 10; + const max = 9; + + expect(() => { + faker.number.binary({ min, max }); + }).toThrowError(`Max ${max} should be greater than min ${min}.`); + }); + }); + + describe('octal', () => { + it('generates single octal character when no additional argument was provided', () => { + const octal = faker.number.octal(); + expect(octal).toBeTypeOf('string'); + expect(octal).toHaveLength(1); + expect(octal).toMatch(/^[0-7]$/); + }); + + it('generates a random octal string with a custom max value', () => { + const octal = faker.number.octal(5); + const octalNum = parseInt(octal, 8); + expect(octalNum).toBeLessThanOrEqual(5); + expect(octal).toMatch(/^[0-7]+$/); + }); + + it('generates a random octal in a specific range', () => { + const octal = faker.number.octal({ min: 15, max: 255 }); + + const octalNum = parseInt(octal, 8); + expect(octalNum).toBeLessThanOrEqual(255); + expect(octalNum).greaterThanOrEqual(15); + }); + + it('should throw when min > max', () => { + const min = 10; + const max = 9; + + expect(() => { + faker.number.octal({ min, max }); + }).toThrowError(`Max ${max} should be greater than min ${min}.`); + }); + }); + describe('hex', () => { it('generates single hex character when no additional argument was provided', () => { const hex = faker.number.hex();