Skip to content

Commit e4a388f

Browse files
committed
Tests
1 parent 09568e5 commit e4a388f

File tree

1 file changed

+239
-0
lines changed

1 file changed

+239
-0
lines changed

src/commands/sync/codegen.rs

+239
Original file line numberDiff line numberDiff line change
@@ -235,3 +235,242 @@ fn strip_extension(path: &str) -> String {
235235
new_path.push_str(stem);
236236
new_path
237237
}
238+
239+
#[cfg(test)]
240+
mod tests {
241+
use super::*;
242+
243+
#[test]
244+
fn test_generate_typescript_empty_data() {
245+
let data = BTreeMap::new();
246+
let options = GeneratorOptions {
247+
output_name: "assets".to_string(),
248+
style: CodegenStyle::Flat,
249+
strip_extension: false,
250+
};
251+
let generator = Generator::new(data, options);
252+
let output = generator.generate_typescript();
253+
let expected_output = "declare const assets: {\n};\nexport = assets;\n";
254+
assert_eq!(output, expected_output);
255+
}
256+
257+
#[test]
258+
fn test_generate_luau_empty_data() {
259+
let data = BTreeMap::new();
260+
let options = GeneratorOptions {
261+
output_name: "assets".to_string(),
262+
style: CodegenStyle::Flat,
263+
strip_extension: false,
264+
};
265+
let generator = Generator::new(data, options);
266+
let output = generator.generate_luau();
267+
let expected_output = "return {\n}";
268+
assert_eq!(output, expected_output);
269+
}
270+
271+
#[test]
272+
fn test_generate_typescript_single_item() {
273+
let mut data = BTreeMap::new();
274+
data.insert("foo.png".to_string(), "path/to/foo.png".to_string());
275+
276+
let options = GeneratorOptions {
277+
output_name: "assets".to_string(),
278+
style: CodegenStyle::Flat,
279+
strip_extension: false,
280+
};
281+
282+
let generator = Generator::new(data, options);
283+
let output = generator.generate_typescript();
284+
285+
let expected_output =
286+
"declare const assets: {\n\t\"foo.png\": \"path/to/foo.png\"\n};\nexport = assets;\n";
287+
assert_eq!(output, expected_output);
288+
}
289+
290+
#[test]
291+
fn test_generate_luau_single_item() {
292+
let mut data = BTreeMap::new();
293+
data.insert("foo.png".to_string(), "path/to/foo.png".to_string());
294+
295+
let options = GeneratorOptions {
296+
output_name: "assets".to_string(),
297+
style: CodegenStyle::Flat,
298+
strip_extension: false,
299+
};
300+
301+
let generator = Generator::new(data, options);
302+
let output = generator.generate_luau();
303+
304+
let expected_output = "return {\n\t[\"foo.png\"] = \"path/to/foo.png\"\n}";
305+
assert_eq!(output, expected_output);
306+
}
307+
308+
#[test]
309+
fn test_generate_typescript_multiple_items_flat() {
310+
let mut data = BTreeMap::new();
311+
data.insert("foo.png".to_string(), "path/to/foo.png".to_string());
312+
data.insert("bar.jpg".to_string(), "path/to/bar.jpg".to_string());
313+
314+
let options = GeneratorOptions {
315+
output_name: "assets".to_string(),
316+
style: CodegenStyle::Flat,
317+
strip_extension: false,
318+
};
319+
320+
let generator = Generator::new(data, options);
321+
let output = generator.generate_typescript();
322+
323+
let expected_output = "declare const assets: {\n\t\"bar.jpg\": \"path/to/bar.jpg\",\n\t\"foo.png\": \"path/to/foo.png\"\n};\nexport = assets;\n";
324+
assert_eq!(output, expected_output);
325+
}
326+
327+
#[test]
328+
fn test_generate_luau_multiple_items_flat() {
329+
let mut data = BTreeMap::new();
330+
data.insert("foo.png".to_string(), "path/to/foo.png".to_string());
331+
data.insert("bar.jpg".to_string(), "path/to/bar.jpg".to_string());
332+
333+
let options = GeneratorOptions {
334+
output_name: "assets".to_string(),
335+
style: CodegenStyle::Flat,
336+
strip_extension: false,
337+
};
338+
339+
let generator = Generator::new(data, options);
340+
let output = generator.generate_luau();
341+
342+
let expected_output = "return {\n\t[\"bar.jpg\"] = \"path/to/bar.jpg\",\n\t[\"foo.png\"] = \"path/to/foo.png\"\n}";
343+
assert_eq!(output, expected_output);
344+
}
345+
346+
#[test]
347+
fn test_generate_typescript_nested() {
348+
let mut data = BTreeMap::new();
349+
data.insert(
350+
"images/foo.png".to_string(),
351+
"path/to/images/foo.png".to_string(),
352+
);
353+
data.insert(
354+
"images/bar.jpg".to_string(),
355+
"path/to/images/bar.jpg".to_string(),
356+
);
357+
data.insert(
358+
"sounds/baz.wav".to_string(),
359+
"path/to/sounds/baz.wav".to_string(),
360+
);
361+
362+
let options = GeneratorOptions {
363+
output_name: "assets".to_string(),
364+
style: CodegenStyle::Nested,
365+
strip_extension: false,
366+
};
367+
368+
let generator = Generator::new(data, options);
369+
let output = generator.generate_typescript();
370+
371+
let expected_output = "declare const assets: {\n\timages: {\n\t\t\"bar.jpg\": \"path/to/images/bar.jpg\",\n\t\t\"foo.png\": \"path/to/images/foo.png\"\n\t},\n\tsounds: {\n\t\t\"baz.wav\": \"path/to/sounds/baz.wav\"\n\t}\n};\nexport = assets;\n";
372+
assert_eq!(output, expected_output);
373+
}
374+
375+
#[test]
376+
fn test_generate_luau_nested() {
377+
let mut data = BTreeMap::new();
378+
data.insert(
379+
"images/foo.png".to_string(),
380+
"path/to/images/foo.png".to_string(),
381+
);
382+
data.insert(
383+
"images/bar.jpg".to_string(),
384+
"path/to/images/bar.jpg".to_string(),
385+
);
386+
data.insert(
387+
"sounds/baz.wav".to_string(),
388+
"path/to/sounds/baz.wav".to_string(),
389+
);
390+
391+
let options = GeneratorOptions {
392+
output_name: "assets".to_string(),
393+
style: CodegenStyle::Nested,
394+
strip_extension: false,
395+
};
396+
397+
let generator = Generator::new(data, options);
398+
let output = generator.generate_luau();
399+
400+
let expected_output = "return {\n\timages = {\n\t\t[\"bar.jpg\"] = \"path/to/images/bar.jpg\",\n\t\t[\"foo.png\"] = \"path/to/images/foo.png\"\n\t},\n\tsounds = {\n\t\t[\"baz.wav\"] = \"path/to/sounds/baz.wav\"\n\t}\n}";
401+
assert_eq!(output, expected_output);
402+
}
403+
404+
#[test]
405+
fn test_generate_typescript_strip_extension() {
406+
let mut data = BTreeMap::new();
407+
data.insert("foo.png".to_string(), "path/to/foo.png".to_string());
408+
409+
let options = GeneratorOptions {
410+
output_name: "assets".to_string(),
411+
style: CodegenStyle::Flat,
412+
strip_extension: true,
413+
};
414+
415+
let generator = Generator::new(data, options);
416+
let output = generator.generate_typescript();
417+
418+
let expected_output =
419+
"declare const assets: {\n\tfoo: \"path/to/foo.png\"\n};\nexport = assets;\n";
420+
assert_eq!(output, expected_output);
421+
}
422+
423+
#[test]
424+
fn test_generate_luau_strip_extension() {
425+
let mut data = BTreeMap::new();
426+
data.insert("foo.png".to_string(), "path/to/foo.png".to_string());
427+
428+
let options = GeneratorOptions {
429+
output_name: "assets".to_string(),
430+
style: CodegenStyle::Flat,
431+
strip_extension: true,
432+
};
433+
434+
let generator = Generator::new(data, options);
435+
let output = generator.generate_luau();
436+
437+
let expected_output = "return {\n\tfoo = \"path/to/foo.png\"\n}";
438+
assert_eq!(output, expected_output);
439+
}
440+
441+
#[test]
442+
fn test_generate_typescript_invalid_identifiers() {
443+
let mut data = BTreeMap::new();
444+
data.insert("foo-bar".to_string(), "path/to/foo-bar.png".to_string());
445+
446+
let options = GeneratorOptions {
447+
output_name: "assets".to_string(),
448+
style: CodegenStyle::Flat,
449+
strip_extension: false,
450+
};
451+
452+
let generator = Generator::new(data, options);
453+
let output = generator.generate_typescript();
454+
455+
let expected_output = "declare const assets: {\n\t\"foo-bar\": \"path/to/foo-bar.png\"\n};\nexport = assets;\n";
456+
assert_eq!(output, expected_output);
457+
}
458+
459+
#[test]
460+
fn test_generate_luau_invalid_identifiers() {
461+
let mut data = BTreeMap::new();
462+
data.insert("foo-bar".to_string(), "path/to/foo-bar.png".to_string());
463+
464+
let options = GeneratorOptions {
465+
output_name: "assets".to_string(),
466+
style: CodegenStyle::Flat,
467+
strip_extension: false,
468+
};
469+
470+
let generator = Generator::new(data, options);
471+
let output = generator.generate_luau();
472+
473+
let expected_output = "return {\n\t[\"foo-bar\"] = \"path/to/foo-bar.png\"\n}";
474+
assert_eq!(output, expected_output);
475+
}
476+
}

0 commit comments

Comments
 (0)