From 5d7dced8dcb7046bc6014f41143584afc781a133 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Sun, 5 May 2024 11:00:52 +0200 Subject: [PATCH 1/2] test: add tests for SSSearcherWithIndex --- .../sssearcher_with_index.js.snap | 518 ++++++++++++++++++ __tests__/sssearcher_with_index.js | 135 +++++ 2 files changed, 653 insertions(+) create mode 100644 __tests__/__snapshots__/sssearcher_with_index.js.snap create mode 100644 __tests__/sssearcher_with_index.js diff --git a/__tests__/__snapshots__/sssearcher_with_index.js.snap b/__tests__/__snapshots__/sssearcher_with_index.js.snap new file mode 100644 index 00000000..f52276cf --- /dev/null +++ b/__tests__/__snapshots__/sssearcher_with_index.js.snap @@ -0,0 +1,518 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`getKeyIDCode 1`] = ` +[ + "QM@HzAmdqjF@", + "RF@Q\`\`", + "qC\`@ISTAlQE\`", + "\`J@H", + "QM@HzAmdqbF@", + "qC\`@ISTAlQEhqPp@", + "sJP@DiZhAmQEb", + "RF@QPvR@", + "QM@HzA@", + "qC\`@ISTAlQEhpPp@", + "qC\`@Qz\`MbHl", + "sJP@DiZhAmQEcFZF@", + "RFPDXH", + "qC\`@IVtAlQE\`", + "QM@HvAmdqfF@", + "sGP@DiVj\`FsDVM@", + "\`L@H", + "sJP@DizhAmQEcFBF@", + "sJP@DjvhAmQEb", + "sFp@DiTt@@AlqEcP", + "sGP@LdbMU@MfHlZ", + "QMHAIhD", + "QM@HzAy@", + "sJP@DkVhAmQEb", + "sNp@DiUjj@[\\QXu\`", + "sJP@DiZhAmQEcFBF@", + "sGP@DjVj\`FsDVM@", + "RFPDTH", + "RG@DXOH@", + "sGP@Divj\`FsDVMcAC@", + "sGP@Dj}j\`FsDVM@", + "qC\`@Qz\`MbHmFRF@", + "sNp@LdbJjj@[\\QXu\`", + "QMHAIhGe@", + "QM@HzAyd\`", + "QM\`AIhD", + "qC\`@ISTA@", + "sGP@DkUj\`FsDVM@", + "qC\`@IVtAlQEhqPp@", + "sNp@DiUjj@[\\QXuqea\`@", + "KAx@@IRjuUPAlHPfES\\", + "QM\`BN\`P", + "sJP@DjZhAmQEcFJF@", + "Hid@@DjU^nBBH@FtaBXUMp\`", + "sNp@Diujj@[\\QXuq\`a\`@", + "sJP@DjvhAmQEcFZF@", + "sJP@DjZhAmQEcFFF@", + "sOp@DjWkB@@FwDVM\\YhX@", + "sNp@Dj}Zj@[\\QXu\`", + "sNp@DiWjj@[\\QXuq\`a\`@", + "sOp@DjWkB@@D", + "KAx@@ITouUPAlHPfES\\", + "KAx@@YIDTjjh@vDHSBin@", + "sNp@DkUZj@[\\QXu\`", + "RFPDXOH@", + "QM\`BN\`^L\`", + "qC\`@ISTAy@", + "sGP@LdbMU@MfHl[FVF@", + "qCb@AIZ\`H", + "KAx@@IRjuUPAlHPfES]FFa\`@", + "KAx@@ITnuUPAlHPfES\\", + "HiD@@DiUVjj\`AmHPfES\\H", + "sNp@DjUjj@[\\QXu\`", + "sJP@DkVhAmQEcFJF@", + "sGP@DjVj\`FsDVMcCC@", + "qC\`@Qz\`MbHmFBF@", + "sJP@DkfhAmQEb", + "qC\`@IVtAlQEhsPp@", + "sGP@Djuj\`FsDVM@", + "sGP@Dj}j\`FsDVMcMC@", + "sJP@DiZhA@", + "KAx@@ISjuUPAlHPfES]F@a\`@", + "sJP@DjZhAmQEcFRF@", + "KAx@@IRnuUPAlHPfES]F@a\`@", + "HiD@@DjWvjj\`AmHPfES\\H", + "QMHAIhGd@", + "sNp@DiUjj@[\\QXuq\`a\`@", + "KAx@@IVjmUPAlHPfES\\", + "sGP@DjVj\`FsDVMcMC@", + "QM\`AIhGe@", + "HiD@@LdbJRjjh@[RDIaTwB", + "qCp@AIZ\`H", + "sGP@LdbMU@MfHl[FFF@", + "QMDARVA@", + "sNp@LdbJjj@[\\QXuqba\`@", + "sNp@LdbJjj@[\\QXuqca\`@", + "sGP@Dkej\`FsDVM@", + "qCb@AIZ\`OI@", + "HaD@@DjUZxHH@AlHPfES]FLa\`@", + "sGP@DkYj\`FsDVM@", + "qCb@AIV\`H", + "sNp@LdbJjj@[\\QXuqea\`@", + "sGP@DkUj\`FsDVMcEC@", + "sFp@DiTt@@Axa@", + "Hmt@@DjU_ZxHHj@AmhPfES\\Lj", + "QM\`BN\`^P", + "qCb@AIZ\`OH\`", + "sFp@DiTt@@AxaP", + "sGP@Djuj\`FsDVMcEC@", + "sGP@Djuj\`FsDVMcIC@", + "sGP@DkUj\`FsDVMcKC@", + "sJP@DkfhAmQEcFRF@", + "sGP@DjVj\`FsDVMcIC@", + "HaD@@DjUZxHH@AlHPfES]FFa\`@", + "qC\`@IRtDVqDV@", + "sNp@Dj}Zj@[\\QXuqfa\`@", + "KAx@@ITnuUPAlHPfES]FFa\`@", + "HiD@@DkUUjj\`AmHPfES\\H", + "sJQ@@dkU@H", + "qC\`@Qz\`H", + "KAx@@IUkmUPAlHPfES\\", + "KAx@@ITouUPAlHPfES]FJa\`@", + "sJP@H~j@[TQX\`", + "sGP@DjZj\`FsDVM@", + "sJP@DkVhAmQEcFFF@", + "sJX@@eKU@H", + "sJP@DizhAy@", + "QMHAIhGbP", + "KAx@@ITouUPAlHPfES]FNa\`@", + "HaD@@DjUZxHD@AlHPfES\\", + "HaD@@DjUZxHH@A@", + "sNp@LdbJjj@[\\QXuqaa\`@", + "Hed@@LdbRQUUUP@vTHSBinFP", + "KAx@@ITouUPAlHPfES]FLa\`@", + "sNp@DkUZj@[\\QXuqba\`@", + "KAx@@ITjuUPAlHPfES]FNa\`@", + "KAx@@YIDTjjh@vDHSBincGPp@", + "HaD@@DjYvxH\`@AlHPfES]FLa\`@", + "RF@QP\`", + "qCb@AIj\`H", + "sNp@DjUjj@[\\QXuqaa\`@", + "sNp@DkVZj@[\\QXu\`", + "KAx@@YIDUJjh@vDHSBin@", + "sGP@DkYj\`FsDVMcIC@", + "sGP@DjVj\`FsDVMcAC@", + "sGP@DiVj\`D", + "sJP@DkVhAmQEcFZF@", + "sNp@LdbLjj@[\\QXu\`", + "QM@HvAmdqbF@", + "HaD@@DjWjXHB@AlHPfES\\", + "sNp@DjwZj@[\\QXuqba\`@", + "sNp@LdbJjj@[\\QXuqda\`@", + "sFp@DiTt@@Axa\`", + "HiD@@Djuujj\`AmHPfES\\H", + "sNp@DkUZj@[\\QXuqca\`@", + "sJP@DiZhAy@", + "KAx@@YIDTjjh@vDHSBincCPp@", + "KAx@@IWNmUPAlHPfES\\", + "KAx@@IVkMUPAlHPfES\\", + "sJQ@@dju@H", + "qCb@AIZ\`OH@", + "qC\`@ISTAxa@", + "sNp@DjyZj@[\\QXu\`", + "Hid@@DjUfaBB\`@FtaBXUMp\`", + "HiD@@DiUVjj\`AmHPfES\\LXBF@", + "KAx@@IUjmUPAlHPfES\\", + "HiD@@DjWvjj\`AmHPfES\\LXjF@", + "sJP@DjVhAmQEb", + "qCb@AIV\`OH\`", + "HiD@@LdbJRjjh@[RDIaTwCFDa\`@", + "KAx@@YIDTjjh@vDHSBinc@Pp@", + "sNp@DjUjj@[\\QXuqda\`@", + "qC\`@Qz\`OED", + "sJP@DkfhAmQEcFZF@", + "KAx@@YIDbjjh@vDHSBincDPp@", + "sGP@Djyj\`FsDVMcMC@", + "KAx@@IVrmUPAlHPfES\\", + "qCp@AIZ\`OI@", + "sJX@@dkU@H", + "sJQ@@dkU@OH\`", + "sNp@Di]ZjBBvxbqk@", + "Hkl@@DjU_Uk\`\`bj\`@[VDIaTwCJzX", + "sGP@DjZj\`FsDVMcEC@", + "Hid@@DjU^nBBH@FtaBXUMpqcHX@", + "sNp@DkeZj@[\\QXu\`", + "sNp@DjYjj@[\\QXuqca\`@", + "sGQ@@djuT@\`", + "HiD@@LdbJTjjh@[RDIaTwB", + "sOp@DjWkB@@Gd\`", + "HeT@@LdbbRKBDQD@CYPaLJfxY@", + "qCr@XIKTA@", + "HiD@@DjW^jj\`AmHPfES\\LXJF@", + "HeT@@DjU]k\`\`b\`@[JDIaTwCH", + "sGP@Djuj\`FsDVMcCC@", + "\`IH\`B", + "sOp@DjWkB@@GdX", + "sJQ@@eKU@H", + "KAx@@YIDUJjh@vDHSBincBPp@", + "sJX@@eKU@OH@", + "KAx@@YIDTjjh@vDHSBincAPp@", + "sOq@@drm\\@@@\`", + "KAx@@IUkMUPAlHPfES\\", + "qCp@AIj\`H", + "Hed@@DjUUjjj@FraBXUMpr", + "sGX@@eJuT@\`", + "sGP@DkUj\`FsDVMcCC@", + "HiD@@Dj}Ujj\`AmHPfES\\LXrF@", + "KAx@@ITouUPAlHPfES]FHa\`@", + "Hed@@DjWujjj@FraBXUMpsFIa\`@", + "sGP@DiUj\`\`mfHlZ", + "sFp@DiTvjhAlqEcP", + "Hid@@DjU^nBBH@FtaBXUMpq\`XX@", + "sJP@DkVdAmQEb", + "qCp@AIZ\`OH\`", + "QMhDRVA@", + "qC\`@ISJAlQE\`", + "qCp@BOTAyhl", + "sJX@@eOU@ODB", + "sFp@DiTt@@AyaB", + "sGP@DkUj\`FsDVMcMC@", + "Hid@@DjYUaBH\`@FtaBXUMpqcHX@", + "qC\`@Qz\`OH@", + "HiD@@DjUVjj\`AmHPfES\\LXZF@", + "sJP@H~j@[TQXqda\`@", + "sJX@@eKU@OI@", + "sNp@Djejj@[\\QXu\`", + "sJQ@@dsU@H", + "sJQ@@dkU@OI\`", + "KAx@@YIMDVjh@vDHSBin@", + "Hid@@DjU^nBBD@FtaBXUMp\`", + "sNp@DkgZj@[\\QXuqca\`@", + "qC\`@IRtDVqDVcEC@", + "Hed@@LdbRQeUUP@vTHSBinFP", + "sNp@DiUjj@P", + "qC\`@IRtDT", + "sNp@DkYZj@[\\QXuqca\`@", + "KAx@@IUkmUPAlHPfES]FDa\`@", + "KAx@@IVjmUPAlHPfES]FNa\`@", + "sOx@@drm\\@@@\`", + "KAx@@ITjuUPAlHPfES]FBa\`@", + "QMDARVAyH", + "sJP\`@dfvhA@", + "HeT@@DjU_k\`\`b\`@[JDIaTwCLXfF@", + "KAx@@IToUUPAlHPfES]FJa\`@", + "sGP@DkYj\`FsDVMcEC@", + "qCb@AIZ\`ODH", + "\`I@\`B", + "KAx@@IUzmUPAlHPfES]FFa\`@", + "sNp@DkfZj@[\\QXu\`", + "KAx@@ITnuUPAlHPfES]F@a\`@", + "HiD@@LddURjjh@[RDIaTwB", + "sNp@Dj~Zj@[\\QXuqfa\`@", + "Hed@@Dj{uZjj@FraBXUMpr", + "KAx@@ITsUUPAlHPfES\\", + "Hid@@LdbRQk\`\`b@AmHPfES\\LXrF@", + "sOp@DjWkB@@GdH", + "sJQ@@dkU@OH@", + "Hid@@DjU^nBBH@FtaBXUMpqahX@", + "sGP@DiYj\`\`mfHlZ", + "KAx@@IToUUPAlHPfES]FLa\`@", + "qCp@AJZ\`ODH", + "Hmt@@DjU]ZxHHj@AmhPfES\\Lj", + "sGP@DkUjPFsDVM@", + "qC\`@IVtA@", + "Hed@@LdbJReUUP@vTHSBinFP", + "sNp@DjuZj@[\\QXuqea\`@", + "KAx@@IUkmUPAlHPfES]FNa\`@", + "HiD@@DkVUjj\`AmHPfES\\H", + "Hed@@DkUeZjj@FraBXUMpr", + "sNp@DkVZj@[\\QXuqea\`@", + "sJP@DiVhHKZbKFLLL@", + "HiD@@Djuyjj\`AmHPfES\\H", + "sNp@DjUjj@[\\QXuq\`a\`@", + "HeT@@DjYUXPbH\`@[JDIaTwCH", + "HiD@@DjwUjj\`AmHPfES\\LXRF@", + "sNq@@djmUPB", + "KAx@@YIEEZjh@vDHSBincCPp@", + "sGP@Di^V\`dmfHlZ", + "Hid@@DjYUaBHP@FtaBXUMp\`", + "sNp@DjYjj@[\\QXuqba\`@", + "sGP@Dkej\`FsDVMcKC@", + "HeT@@DjU^k\`\`b\`@[JDIaTwCH", + "qC\`@Qv\`MbHmFBF@", + "sGQ@@djmT@\`", + "qCr@XIKTAyH", + "qC\`@IVtAlQEhpPp@", + "Hid@@LdbbQxXF@@AmHPfES\\LXjF@", + "sGP@DkYj\`FsDVMcCC@", + "KAx@@IVsMUPAlHPfES\\", + "qCp@AIj\`ODl", + "HiD@@DkeUjj\`AmHPfES\\H", + "deT@@DjU[k\`\`b\`@vTHSBinFP", + "sJP@DkVdAmQEcFRF@", + "HiD@@LdbJTjjh@[RDIaTwCFDa\`@", + "HiD@@DkYyjj\`AmHPfES\\H", + "sJP@DjZhAyH", + "KAx@@IVkMUPAlHPfES]FDa\`@", + "sJX@@dkU@OI@", + "Hed@@LdbRQUUUP@vTHSBinFXpLL@", + "Hed@@DjuUZjj@FraBXUMpr", + "sGP@Djfj\`FsDVMcKC@", + "sNp@DkVZj@[\\QXuqba\`@", + "sNp@DjyZj@[\\QXuqfa\`@", + "qCb@AIj\`OH@", + "sNp@DjUZj@[\\QXu\`", + "KAx@@IWOMUPAlHPfES\\", + "Hid@@DjU^nBBH@D", + "Hed@@DjuvZjj@FraBXUMpr", + "sJP@DiVhHKZbKFLtL@", + "dmt@@DjU_ZxHHj@C[PaLJfxYVLKC@", + "sNp@DjuZj@[\\QXuqca\`@", + "sJP@DkfhAmQEcFJF@", + "sNp@LdbJZj@[\\QXu\`", + "HeT@@DjU_k\`\`b\`@[JDIaTwCLXFF@", + "KAx@@IVlmUPAlHPfES]FNa\`@", + "HeT@@LdbbRKBDQD@CYPaLJfxYcEPp@", + "Hid@@DjUZnBBH@FtaBXUMpqcHX@", + "qCa@CIKTA@", + "HiD@@Dj~]jj\`AmHPfES\\LXFF@", + "sKP@Di\\Zj@[TQX\`", + "sGP@Djfj\`FsDVMcEC@", + "HiD@@DkgYjj\`AmHPfES\\H", + "sNp@DjuZj@[\\QXuqaa\`@", + "KAx@@YIMDVjh@vDHSBincDPp@", + "sJP@DjVhHKZbKFLTL@", + "Hid@@LdbRQk\`\`b@AmHPfES\\LXZF@", + "HiD@@Dj}Ujj\`AmHPfES\\LXzF@", + "HeT@@DjU_k\`\`bP@[JDIaTwCH", + "sNp@DkUZi@[\\QXu\`", + "HiD@@DjYfjj\`AmHPfES\\H", + "sGP@DjZj\`FsDVMcAC@", + "Hmt@@DjU_jxHHj@AmhPfES\\Lj", + "Hid@@LdbRQk\`\`R@AmHPfES\\H", + "KAx@@YIDUJjh@vDHSBincDPp@", + "qCr@XIKTAyD", + "sOq@@drm\\@@@|\`@", + "Hed@@DjW^jjj@FraBXUMpsFBa\`@", + "HeT@@DjY]zXFB@@[JDIaTwCH", + "Hkl@@DjU_Vk\`\`bj\`@[VDIaTwCJzX", + "Hid@@DjY}nBHH@FtaBXUMpqcHX@", + "sGX@@eKuT@|d@", + "sGP@Dj^Y\`FsDVM@", + "HcL@@DjU_ZnBBJh@FqaBXUMprn\`", + "sJP@DkVdAmQEcFJF@", + "sOq@@drm\\@@@|b@", + "sNp@DjyZj@[\\QXuqaa\`@", + "HaD@@DjUZxHH@AyD@", + "qC\`@Qv\`H", + "dmt@@DjU_ZxHHj@C[PaLJfxYVLYC@", + "sGP@Dkej\`FsDVMcMC@", + "Hed@@DjUUjjj@FraBXUMpsFHa\`@", + "HeT@@LdbbRkBDQD@CYPaLJfxY@", + "KAx@@IU{MUPAlHPfES]FLa\`@", + "RG@DTH", + "sJY@DDeVhA@", + "KAx@@YIDUJjh@vDHSBinc@Pp@", + "sJX@@dkU@OI\`", + "sJQ@@dju@OI\`", + "HeT@@LdbbRKBDQD@CYPaLJfxYcFPp@", + "sFp@DiTvjhAlqEcXpPp@", + "HaD@@DjUZxHH@AyG@", + "sNx@@eJ}UPB", + "sNp@LddUjj@[\\QXuqca\`@", + "HaDH@@RVU[j@@@D", + "sNp@DkgZi@[\\QXu\`", + "sGY@LDeVj\`D", + "sNp@LdbJfZBZvxbqk@", + "sJP\`@dfvhAyL", + "sGX@AddQjhAxe\`", + "Hmt@@DjU_ZxHHj@AmhPfES\\LkFIa\`@", + "qCh@CIKTA@", + "sNp@LdbLjj@[\\QXuq\`a\`@", + "sOq@@drm\\@@@|a@", + "KAx@@IUzmUPAlHPfES]FJa\`@", + "sNx@AddQUUPB", + "sGP@Di]jP\`mfHlZ", + "sJP\`@TeZhA@", + "KAx@@IRjmUPHKXPaLJfx", + "HeT@@LdbRTM\\DDT@CYPaLJfxY@", + "HaF@@@Rfu[j@@@D", + "Hid@@DjYUaBH\`@FtaBXUMpqchX@", + "KAx@@IUjmTpAlHPfES\\", + "Hid@@DjU^nBBD@FtaBXUMpqcHX@", + "sGP@DiUj\`\`mfHl[FFF@", + "KAx@@IUvmUPAlHPfES]FLa\`@", + "Hed@@LdbQTUUUP@vTHSBinFXqDL@", + "sJP@DkVhA@", + "sOx@@drm\\@@@|b@", + "KAx@@IUkMUPAlHPfES]FDa\`@", + "HeT@@LdbRQU\\DDT@CYPaLJfxY@", + "HiD@@Dj}Yjj\`AmHPfES\\LXrF@", + "HiD@@Dj{ujj\`AmHPfES\\LXFF@", + "KAx@@IWNmUPAlHPfES]FFa\`@", + "KAx@@IRkMUPHKXPaLJfx", + "sJP@DjYdAmQEcFZF@", + "sJY@LDeZhAyL", + "HaDH@@RVU[f@@@D", + "sJP\`@deVhAyB", + "HaD@@DjWjZjj\`AlHPfES\\", + "sGP@DkYj\`FsDVMcMC@", + "sNp@DkgZj@[\\QXuqea\`@", + "sJQ@@dlu@H", + "HeT@@DjU]k\`\`b\`@[JDIaTwCLXrF@", + "sJX@@dkU@OH\`", + "RFDDQFCr\`", + "sJP@DiYXIKZbKFLLL@", + "KAx@@YIHjjjh@vDHSBincGPp@", + "Hk\\@@DjU^ukmLHH@@@AmXPfES\\Lki\`", + "sGQ@@djmT@|b@", + "Hid@@DjUfaBB\`@FtaBXUMpqahX@", + "sNx@@eRmUPB", + "Hmt@@LdbRVak\`\`ah@FvaBXUMprh", + "qCr@XIJtA@", + "KAx@@IWMmUPAlHPfES]FNa\`@", + "HeT@@DjYYZPbJ@@[JDIaTwCH", + "sNp@DkfZj@[\\QXuqea\`@", + "Hid@@DjU^nBAHAEVtaBXUMp\`", + "dmt@@DjUgZDHJJ@C[PaLJfxYT", + "sGP@DkejPFsDVM@", + "sNx@@eJmUPB", + "qCb@AIf\`H", + "HcL@@DjU_VnBBJh@FqaBXUMprnqcXX@", + "Hid@@DjUZnBBH@FtaBXUMpqahX@", + "sNp@LdbQZjBBvxbqkcGC@", + "sOx@@drm\\@@@|c@", + "sJP@H~j@^R@", + "KAx@@YIDcFjhDElHPfES\\", + "Hid@@DjUZnBAH@FtaBXUMp\`", + "sNp@LddUji@[\\QXu\`", + "sGP@DjfjPFsDVM@", + "HeT@@DjYUXPbD\`@[JDIaTwCH", + "KAx@@IUoMUPAlHPfES]FDa\`@", + "sFp@DiTt@@AyaD", + "Hed@@DjuuZjj@FraBXUMpsFIa\`@", + "HeT@@DjUghP\`h\`@[JDIaTwCLXfF@", + "sOp@DjWkjj\`FwDVM\\YhX@", + "sGP@Djfj\`FsDVMcIC@", + "KAx@@IRkmUPHKXPaLJfzL]C@", + "sNx@@djmUPB", + "QM\`AIdD", + "sOp@DjWkB@@Gbe@", + "sNp@DjyZj@[\\QXuqca\`@", + "QM@HuAmd\`", + "sNp@LddUjj@[\\QXuqea\`@", + "daD@@DjUZxHD@CXPaLJfzLYC@", + "qCb@AIZPH", + "HiD@@LdbJTjjh@[RDIaTwCF@a\`@", + "Hmt@@DjU_ZxHHi@AmhPfES\\Lj", + "HaDH@@RYWih@H@D", + "HiD@@LdbJTjjh@[RDIaTwCFHa\`@", + "sGX@@djuT@|a@", + "sNp@DkfZj@[\\QXuqaa\`@", + "Hid@@DjU^nBBH@GdL", + "KAx@@IVkMUPAlHPfES]FJa\`@", + "qCr@XIKTAy@", + "HmT@@Dj{uVjjh@[ZDIaTwCJqaXX@", + "dmt@@DjYWVDHbJ@C[PaLJfxYT", + "Hif@@@RUe^Fh@@@P", + "HaDH@@Rfu[j@@@GdH", + "KAx@@IVsMUPAlHPfES]FDa\`@", + "sKP@Di\\Zj@[TQXq\`a\`@", + "sJX@@eMU@OH@", + "HeT@@DjU^k\`\`b\`@[JDIaTwCLXFF@", + "Hmt@@LdbbRJXPbHh@FvaBXUMprh", + "sJP@DjvhAmQEcFBF@", + "dmt@@LdbbRNXPbHh@MmBDpj[aeXplL@", + "sJP\`@dfvhAyD", + "sGP@Di^V\`dmfHl[FVF@", + "KAx@@IVsmUPAlHPfES]FBa\`@", + "sOq@@drm\\@@@|PP", + "sJY@BDeZhA@", + "HeT@@LdbRbmBDED@CYPaLJfxY@", + "Hed@@Djy[Zjj@FraBXUMpr", + "HeT@@DjU]k\`\`b\`@[JDIaTwCLXFF@", + "Hid@@DjUfaBB\`@D", + "qCa@CIJtA@", + "QMPARVA@", + "Hid@@DjUfaBB\`@FtaBXUMpqcHX@", + "sJY@BDfZhA@", + "HeT@@DjUghP\`hP@[JDIaTwCH", + "Hed@@Dj{uZjj@FraBXUMpsFIa\`@", + "dmt@@DjYUvDHbJ@C[PaLJfxYVLUC@", + "sNp\`@dfuZj@P", + "sJQ@@dmU@OH@", + "sJX@@dmU@H", + "HeT@@DjU]k\`\`b\`@[JDIaTwCLXZF@", + "HiD@@LdfbJZjh@[RDIaTwCFAa\`@", + "sOx@@drm\\@@@|a@", + "deT@@DjUfhP\`h\`@vTHSBinFP", + "dmt@@DjU]ZxHHj@C[PaLJfxYVLKC@", + "sOp@DjWkjj\`FwDVM\\XHX@", + "HcL@@LdbbRNSBDQEP@McBDpj[ae]cFpp@", + "HiD@@Dj}Yji\`AmHPfES\\H", + "HaDH@@RYe[hB@@D", + "Hid@@DjU^njjj@FtaBXUMpq\`XX@", + "deT@@LdbbRKBDQB@FraBXUMpr", + "QMPARZA@", + "sOq@@drm\\@@@|QX", + "HaD@@DjYvxH\`@A@", + "HcL@@LdbbRNcBDQEP@McBDpj[ae]@", + "QMhDRZA@", + "RG@DXLHmP", + "QM\`BN\`XQYd", + "RG@DTLHmP", + "QMHAIXFEVd", + "QMDARVAaH", + "RFPDXLHmP", + "RF@Q\`vRbdLEC@", + "RF@QpvR@", + "QO@HyjAmd\`", + "\`II@B", + "\`II@CFspqJp", + "\`II@CF[@hM@prB\`", + "\`H@[T[|B\`XN@PdM@p|@bHrBcDk@", + "RG@DXMj}F@", + "QM\`BN\`[L~b@", + "RG@DTMj}D@", + "QMHAIXFt~j@", + "QMDARVA}L@", + "RFPDXMj}D@", + "sKP@Di\\YZ@[TQXqaa\`@", + "eF\`BHD", +] +`; diff --git a/__tests__/sssearcher_with_index.js b/__tests__/sssearcher_with_index.js new file mode 100644 index 00000000..5bcd4b1d --- /dev/null +++ b/__tests__/sssearcher_with_index.js @@ -0,0 +1,135 @@ +'use strict'; + +const { Molecule, SSSearcherWithIndex } = require('../minimal'); + +test('getOCL', () => { + const searcher = new SSSearcherWithIndex(); + expect(searcher.getOCL().Molecule).toBe(Molecule); +}); + +test('getKeyIDCode', () => { + expect(SSSearcherWithIndex.getKeyIDCode()).toMatchSnapshot(); +}); + +test('should compute tanimoto similarity', () => { + const { + benzeneIndex, + benzeneFragmentIndex, + ethylBenzeneIndex, + allicinIndex, + } = getTestData(); + expect( + SSSearcherWithIndex.getSimilarityTanimoto(benzeneIndex, benzeneIndex), + ).toBe(1); + expect( + SSSearcherWithIndex.getSimilarityTanimoto( + benzeneIndex, + benzeneFragmentIndex, + ), + ).toBe(1); + expect( + SSSearcherWithIndex.getSimilarityTanimoto(benzeneIndex, ethylBenzeneIndex), + ).toBe(1 / 3); + expect( + SSSearcherWithIndex.getSimilarityTanimoto(benzeneIndex, allicinIndex), + ).toBeCloseTo(0.0476); +}); + +test('should compute angle cosine similarity', () => { + const { + benzeneIndex, + benzeneFragmentIndex, + ethylBenzeneIndex, + allicinIndex, + } = getTestData(); + expect( + SSSearcherWithIndex.getSimilarityAngleCosine(benzeneIndex, benzeneIndex), + ).toBe(1); + expect( + SSSearcherWithIndex.getSimilarityAngleCosine( + benzeneIndex, + benzeneFragmentIndex, + ), + ).toBe(1); + expect( + SSSearcherWithIndex.getSimilarityAngleCosine( + benzeneIndex, + ethylBenzeneIndex, + ), + ).toBeCloseTo(0.57735); + expect( + SSSearcherWithIndex.getSimilarityAngleCosine(benzeneIndex, allicinIndex), + ).toBeCloseTo(0.18033); +}); + +test('hex string', () => { + const { benzeneIndex } = getTestData(); + const hexString = SSSearcherWithIndex.getHexStringFromIndex(benzeneIndex); + expect(hexString).toHaveLength(128); + expect(SSSearcherWithIndex.getIndexFromHexString(hexString)).toStrictEqual( + benzeneIndex, + ); +}); + +test('bit count', () => { + expect(SSSearcherWithIndex.bitCount(0)).toBe(0); + expect(SSSearcherWithIndex.bitCount(0b110011)).toBe(4); +}); + +test('should find in itself', () => { + const { benzene, benzeneIndex, benzeneFragment, benzeneFragmentIndex } = + getTestData(); + const searcher = new SSSearcherWithIndex(); + searcher.setMolecule(benzene, benzeneIndex); + searcher.setFragment(benzeneFragment, benzeneFragmentIndex); + expect(searcher.isFragmentInMolecule()).toBe(true); +}); + +test('should find in larger structure', () => { + const { + ethylBenzene, + ethylBenzeneIndex, + benzeneFragment, + benzeneFragmentIndex, + } = getTestData(); + const searcher = new SSSearcherWithIndex(); + searcher.setMolecule(ethylBenzene, ethylBenzeneIndex); + searcher.setFragment(benzeneFragment, benzeneFragmentIndex); + expect(searcher.isFragmentInMolecule()).toBe(true); +}); + +test('should not find in different structure', () => { + const { allicin, allicinIndex, benzeneFragment, benzeneFragmentIndex } = + getTestData(); + const searcher = new SSSearcherWithIndex(); + searcher.setMolecule(allicin, allicinIndex); + searcher.setFragment(benzeneFragment, benzeneFragmentIndex); + expect(searcher.isFragmentInMolecule()).toBe(false); +}); + +function getTestData() { + const searcher = new SSSearcherWithIndex(); + + const benzene = Molecule.fromSmiles('c1ccccc1'); + const benzeneIndex = searcher.createIndex(benzene); + + const benzeneFragment = Molecule.fromSmiles('c1ccccc1'); + benzeneFragment.setFragment(true); + const benzeneFragmentIndex = searcher.createIndex(benzeneFragment); + + const ethylBenzene = Molecule.fromSmiles('CCc1ccccc1'); + const ethylBenzeneIndex = searcher.createIndex(ethylBenzene); + + const allicin = Molecule.fromSmiles('O=S(SC\\C=C)C\\C=C'); + const allicinIndex = searcher.createIndex(allicin); + return { + benzene, + benzeneIndex, + benzeneFragment, + benzeneFragmentIndex, + ethylBenzene, + ethylBenzeneIndex, + allicin, + allicinIndex, + }; +} From 9536040a338777b6fbb93ec40afd3d1754e33239 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Sun, 5 May 2024 11:03:27 +0200 Subject: [PATCH 2/2] chore: test on Node.js 22 --- .github/workflows/lactame.yml | 2 +- .github/workflows/nodejs.yml | 4 ++-- .github/workflows/release.yml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/lactame.yml b/.github/workflows/lactame.yml index b4766ffa..d116352a 100644 --- a/.github/workflows/lactame.yml +++ b/.github/workflows/lactame.yml @@ -17,7 +17,7 @@ jobs: run: ./scripts/get-gwt.sh - uses: actions/setup-node@v4 with: - node-version: 20.x + node-version: 22.x - name: Install dependencies run: npm ci - name: Build project diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index 99103483..4499748b 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -13,7 +13,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: - node-version: 20.x + node-version: 22.x - name: Install dependencies run: npm ci - name: Run ESLint @@ -22,7 +22,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node-version: [18.x, 20.x, 21.x] + node-version: [18.x, 20.x, 22.x] fail-fast: false steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index dba72aff..0f443a11 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -28,7 +28,7 @@ jobs: if: ${{ steps.release.outputs.release_created }} - uses: actions/setup-node@v4 with: - node-version: 20.x + node-version: 22.x registry-url: 'https://registry.npmjs.org' if: ${{ steps.release.outputs.release_created }} - run: npm ci